0

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

我将日志放在 try catch 块中并捕获它们,但它们都指向一种方法。详细问题在我以前的帖子中。

然后我决定使用 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=0e4dfa4p ebp=0e =0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202 00000000 ?? ???

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

4

1 回答 1

4
  1. 我的意思是最好的方式,但您需要阅读 WinDbg(请参阅WinDbg AZ)。它有一个巨大的学习曲线,但是一旦你习惯了它就会非常有用。

  2. 您需要配置 WinDbg 以加载 tinyWRAP.dll 的调试信息。应该有一个名为 tinyWRAP.PDB 的文件,假设您是该文件的开发者。打开 File->Symbol Path 并根据需要添加。

  3. Microsoft 支持他们自己的二进制文件的符号服务器(即 PDB 文件)。将此“路径”添加到 WinDbg 符号服务器路径,WinDbg 将下载它可以从 MS 找到的任何内容:SRV*C:\SymbolServer\symserver*http://msdl.microsoft.com/download/symbols

  4. 访问冲突只是意味着程序试图访问不应该的堆内存;即,分配给另一个进程的内存。

例如,如果您对指向整数的指针进行算术运算而不首先取消引用它,您最终会将变量指向进程可能无法访问的某个其他位置。

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

于 2012-06-15T13:28:55.817 回答