首先,感谢您花时间查看我的问题和帮助。我注意到这里的很多提问者很少或根本没有表示赞赏,但我真诚地感谢这里的帮助和社区:)
我为一个我没有源代码的应用程序(它是一个视频游戏)编写了一个 C++ 插件(包含数百个源文件)。换句话说,我只有插件的源代码,但没有游戏。现在,在我插件的数千行中,某处导致游戏引擎抛出异常(可能是访问冲突),我不知道在哪里。到调试器中断时,堆栈已损坏,我得到的只是我没有源代码的 DLL 的十六进制地址(但肯定会在我的 DLL 中发生异常)。我尝试了一切......我似乎无法找到异常发生的位置。有时调试器指向一个“内存重定位”函数(我从未在我的插件中使用过),有时它指向引擎的 GameFrame(),
我几乎尝试了一切......我搜索了几个小时试图找出如何使用其他调试器,如 WinDbg 和 Microsoft Application Verifier。我试图注释掉调试器指向的一个或另一个,或两者,但它仍然崩溃。我什OUTPUT("The name of the last executed function is: %s", __FUNCTION__)
至在我的应用程序中插入了每个函数,希望煞费苦心地捕捉最后一个函数,但似乎任何类型的 I/O 都因某种原因阻止了异常的发生......并且 10 分钟的调试和崩溃发生在最后一次随机执行功能。
我无法找出这种访问冲突发生在哪里,或者在哪里删除了一些临时对象以导致这些错误指针(我在使用它之前检查了每个指针),但是该死的,我在这里达到了我的极限。
那么,如何调试不可能的事情......一个带有蹩脚的调试器调用堆栈的随机崩溃?提前感谢您的耐心和善意的帮助!