我正在通过 JNI 从 Java 调用 C++ .dll,之前当它崩溃时,我会收到传统的弹出窗口,询问我是否要打开 Visual Studio 来调试它。突然间它就关闭了。我什至尝试运行 Visual Studio 的一个实例并附加到该进程,希望它能捕获任何抛出的异常并停止。它看到异常:
First-chance exception at 0x027bfeb8 in java.exe: 0xC0000005: Access violation reading location 0x0000000000000008.
First-chance exception at 0x027c1794 in java.exe: 0xC0000005: Access violation reading location 0x0000000000000008.
First-chance exception at 0x0281b3a0 in java.exe: 0xC0000005: Access violation reading location 0x000000000000000c.
它一直持续到它关闭?
我是否以某种方式选中了一个告诉我的调试器停止调试的框?有没有办法强制它捕获这些异常,以便我可以查看堆栈跟踪(.dll 是用调试符号构建的)。当我们在他的机器上重新创建行为时,我的实验室伙伴的计算机会提示他调试它,所以这看起来像是我可能不小心启用/禁用的东西。
我在Visual Studio中对工具->选项->调试进行了一些挖掘。所有 3 种类型都启用了即时调试。在 Debug->Exceptions 下,我检查了那里的所有类型,希望它能够捕捉到一些东西,并且确实如此,但我认为与实际导致问题的类型没有任何关系。
有什么想法可以重新启用在崩溃时提示我进行调试的行为吗?
编辑:
我已经通过其他方法解决了我的错误,我正在释放一个值为 CCCCCCCCCCCCCCCC 的指针,因为它在循环通过的指针数组中未初始化。这似乎不是那种应该崩溃得如此严重以至于调试器无法处理的错误。仍然想知道为什么我不能首先调试。