Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何根据内存偏移量调查崩溃_C_Visual Studio_Debugging_Dll_Memory Address - Fatal编程技术网

C 如何根据内存偏移量调查崩溃

C 如何根据内存偏移量调查崩溃,c,visual-studio,debugging,dll,memory-address,C,Visual Studio,Debugging,Dll,Memory Address,我的公司正在交付一个DLL,它每天都在测试。 今天早上它崩溃了,C堆栈跟踪提到了崩溃的以下位置: [<product>.dll+0x279a30] // this stack trace contains no reference towards any function. [.dll+0x279a30]//此堆栈跟踪不包含对任何函数的引用。 由于DLL是在发布模式下编译的(使用VisualStudio),这不是很有趣(发布DLL中没有调试信息)。我尝试过使用DLL(在调试模式下

我的公司正在交付一个DLL,它每天都在测试。 今天早上它崩溃了,C堆栈跟踪提到了崩溃的以下位置:

[<product>.dll+0x279a30] // this stack trace contains no reference towards any function.
[.dll+0x279a30]//此堆栈跟踪不包含对任何函数的引用。
由于DLL是在发布模式下编译的(使用VisualStudio),这不是很有趣(发布DLL中没有调试信息)。我尝试过使用DLL(在调试模式下编译)复制崩溃,但没有崩溃

现在我考虑做两个编译:一个用于调试,另一个用于发布模式,如果发布模式中出现崩溃,我想使用提到的内存地址在调试DLL中查找更多信息,但我有一个疑问:我希望调试和发布DLL中提到的内存地址完全不同(例如,在释放模式下没有断言),因此我担心我的过程没有意义


有人知道我该如何继续吗?有人知道我该如何使用C堆栈跟踪中提到的内存地址吗?(仅供参考,我有*.pdb文件,但我不知道如何使用它们(cvdump.exe和Visual Studio无法打开文件))

根据定义,您无法调试在发布模式下生成的DLL。但它在调试模式下工作的事实可能与未初始化的变量有关。我已经看到了很多。@Jean-Françoisfare:因为我正在处理访问冲突,您可能是对的。对我来说,这听起来肯定像是未定义的行为,调试版本可能更复杂原谅。几年前,我在VxWorks上遇到了类似的问题,我的记忆很模糊,但我想我将崩溃中报告的偏移量应用到了目标代码的反汇编中,以确定我使用的是什么函数,然后转到源代码,很快就发现了问题。也许这方面的问题值得一试。你知道吗也可以为发布版本启用调试信息。您应该为您的版本保存映射文件,然后如果有崩溃转储,您可以重新对其进行符号化。