本文介绍了WinDbg:APPLICATION_HANG_WRONG_SYMBOLS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我对WinDbg很新,而且我试图找到一个我的应用程序挂起的错误,没有任何明显的原因。我不知道我在做正确的事情,但我明白,我需要两个符号的系统dlls以及我正在调试的.exe。因此,我设置了这样的符号路径:

  srv * c:\websymbols * http://msdl.microsoft .com / download / symbols; S:\MY\PATH 

文件夹中放置了由VS生成的.pdb。我是积极的,这是正确的.pdb文件,但它是建立在不同的架构(不知道这是否是一个问题)。我想看一个完整的堆栈跟踪一开始,所以我跑了!analyze-v。输出看起来像。您可以看到它列出了APPLICATION_HANG_WRONG_SYMBOLS作为主要问题。所以我运行了.reload / f,给我。我没有dnAalytics或Vertec.Interop的符号,所以这些错误是有道理的,但是有一些缺少的校验和和iphlpapi.pdb没有找到。



所以我的问题是:为什么WinDBG列出错误的符号作为主要问题,即使我是积极的,我有正确的.pdb文件可用? (我在同一台机器上运行WinDBG,生成转储)。甚至认为我的符号是错误的,我可以在多大程度上信任堆栈跟踪?有没有人看到一个明显的问题,可能会导致我的应用程序从堆栈跟踪挂起?任何指针都赞赏!

解决方案

这里的错误符号可能是因为您使用版本少于4.0的64位CLR并且!分析扩展在解码混合本机/托管堆栈时有一些麻烦。

这是因为您将符号服务器放在符号路径中的本地路径之前。 Windbg不知道哪个模块是你的,哪个是微软的。它只是按照符号路径指定的顺序查找模块的PDB文件。

x64上的堆栈非常可靠,因为堆栈步行不需要符号。符号是可靠的(即您没有错误的符号),除非您强制windbg忽略错误的时间戳/校验和与 .reload / f / i



在某些情况下,地址 - >符号可能看起来错误。这通常是由于具有相同代码的小功能(如果函数为虚拟或代码未被优化,则在C ++代码中非常常见)


I'm pretty new to WinDbg and I'm trying to find a bug which has my application hanging for no appearent reason. I'm not sure I'm doing things right, but I understand that I need both symbols for the system dlls aswell as the .exe I'm debugging. Thus, I set up my symbol path like this:

srv*c:\websymbols*http://msdl.microsoft.com/download/symbols;S:\MY\PATH

The second path pointing to a folder where I placed the .pdb that was generated by VS. I'm positive that's the correct .pdb file, but it was built on a different architecture (not sure if this is an issue). I would like to see a complete stack trace for a start, so I ran !analyze-v. The output looks like this. As you can see it lists APPLICATION_HANG_WRONG_SYMBOLS as primary problem. So I ran .reload /f, giving me this output. I have no symbols for dnAnalytics or Vertec.Interop, so these errors make sense, but there are some missing checksums and iphlpapi.pdb was not found.

So my questions would be: Why does WinDBG lists wrong symbols as primary problem, even though I'm positive I do have the right .pdb file available? (I'm running WinDBG on the same machine the dump was generated). To what extent can I trust the stack trace even thought my symbols are wrong, appearently? Does anyone see a obvious problem that could cause a hang in my application from the stack trace already? Any pointers appreciated!

解决方案

The "wrong symbols" here is probably because you are using 64-bit CLR with version less than 4.0 and the !analyze extension has some trouble decoding the mixed native / managed stack.

This is because you put the symbol server before you local path in the symbol path. Windbg does not know which module is yours and which is Microsoft's. It just looks for the PDB file for the module in the order speicified by the symbol path.

Stacks on x64 are very reliable since the stack-walk does not require symbols. Symbols are reliable (that is you do not have wrong symbols) unless you forced windbg to ignore wrong timestamp / checksum with .reload /f /i

In some cases the address -> symbol may seem wrong. This is usually due to small functions that have the same code (very common in C++ code if the functions are virtual or the code is not optimized)

这篇关于WinDbg:APPLICATION_HANG_WRONG_SYMBOLS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 03:13