如何使用 WinDbg 中的调试信息

本文关键字:调试 信息 何使用 WinDbg | 更新日期: 2023-09-27 18:37:24

当我尝试从发布文件夹运行它时,我的应用程序不断崩溃。

我把日志放在里面尝试捕获块并捕获它们,但它们都指向一种方法。脱胎问题在我之前的帖子中。

然后我决定使用 WinDbg 并附加可执行文件来检查我的应用程序崩溃的确切原因。现在,来自WinDbg的信息似乎很神秘。

(13e4.1444):访问冲突 - 代码 c0000005(第一次机会) 在处理任何异常之前,将报告第一次机会异常。 此异常可能是预期和处理的。 错误:找不到符号文件。 默认导出 E:''VCS''DeskconWSP''Deskcon''bin''Release''tinyWRAP.dll - eax=0e7e1c00 ebx=0d83d918 ecx=0d835b70 edx=0cce8ce0 esi=0d835b70 edi=ffffffff eip=00000000 ESP=0E4DFA4C EBP=0E4DFA58 IOPL=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202 00000000 ?? ???

有关如何使用此调试信息的任何参考或指示?

如何使用 WinDbg 中的调试信息

  1. 我的意思是最好的方式,但你需要阅读WinDbg(请参阅WinDbg A-Z)。 它有一个巨大的学习曲线,但一旦你习惯了它,它真的很有用。

  2. 您需要将 WinDbg 配置为加载 tinyWRAP.dll 的调试信息。 应该有一个名为tinyWRAP.PDB的文件,假设你是这个文件的开发者。 打开文件>符号路径并根据需要添加。

  3. Microsoft支持自己的二进制文件的符号服务器(即 PDB 文件)。将此"路径"添加到 WinDbg 符号服务器路径,WinDbg 将下载它能从 MS 中找到的任何内容:srv*c:''SymbolServer''symserver*http://msdl.microsoft.com/download/symbol

  4. 访问
  5. 冲突仅意味着程序正在尝试访问不应该访问的堆内存;即分配给另一个进程的内存。

例如,如果你在指向整数的指针上进行算术运算,而没有先取消引用它,你最终会将变量指向进程可能无法访问的其他位置。

在纯托管程序中,您几乎永远不会看到这一点,但是如果您正在与本机 DLL 或代码进行交互,那么这可能会为您提供正在发生的事情的提示。