WinDbg查看没有正常显示的函数堆栈信息
2016-11-29 11:58
274 查看
工作中难免需要查看dump,现在VC2015对dump的解析已经非常好了,自动化程度做的也很不错,只要设置了symbol路径,则绝大部分dump都可以自动解析。但有的dump,函数堆栈不够清晰,默认情况下windbg/cv2015都无法准确解析,这里就需要windbg来手动处理了。处理步骤如下:
1. 问题示例。
0:025> knb
# ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
00 3211f0c0 76273520 ntdll!NtDelayExecution+0x15
*** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll -
01 3211f0d0 75c2270d KERNELBASE!Sleep+0xf
02 3211f0e4 75c07890 kernel32!GetProfileStringW+0x15161
03 3211f0f4 75c0780f kernel32!UnhandledExceptionFilter+0x161
04 3211f180 77bd21d7 kernel32!UnhandledExceptionFilter+0xe0
05 3211ffd4 77b99ea5 ntdll!RtlKnownExceptionFilter+0xb7
06 3211ffec 00000000 ntdll!RtlInitializeExceptionChain+0x36
这里输入knb没有显示自己的库堆栈信息。
2. 输入kvn,得到更多信息。
# ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
00 3211f0c0 76273520 000003e8 00000000 3211f0e4 ntdll!NtDelayExecution+0x15
01 3211f0d0 75c2270d 000003e8 00000000 00000001 KERNELBASE!Sleep+0xf
02 3211f0e4 75c07890 3211f1b0 00000001 3211f180 kernel32!GetProfileStringW+0x15161
03 3211f0f4 75c0780f 3211f1b0 00000001 52cfe7e1 kernel32!UnhandledExceptionFilter+0x161
04 3211f180 77bd21d7 00000000 77bd20b4 00000000 kernel32!UnhandledExceptionFilter+0xe0
05 3211ffd4 77b99ea5 00403640 16ce9280 00000000 ntdll!RtlKnownExceptionFilter+0xb7
06 3211ffec 00000000 00403640 16ce9280 00000000 ntdll!RtlInitializeExceptionChain+0x36
可以看到红色标注的堆栈异常,需要解析 0x3211f1b0
地址内容。
4. 解析异常地址内容。
0:025> dd 3211f1b0 L2
3211f1b0 3211f2b0 3211f300
这里 3211f300 可以正常解析堆栈的关键。
5. 输入解析命令。
.cxr 3211f300
这样windbg就会自动重新解析这个函数堆栈,并定位到报错的位置。OVER
1. 问题示例。
0:025> knb
# ChildEBP RetAddr
WARNING: Stack unwind information not available. Following frames may be wrong.
00 3211f0c0 76273520 ntdll!NtDelayExecution+0x15
*** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll -
01 3211f0d0 75c2270d KERNELBASE!Sleep+0xf
02 3211f0e4 75c07890 kernel32!GetProfileStringW+0x15161
03 3211f0f4 75c0780f kernel32!UnhandledExceptionFilter+0x161
04 3211f180 77bd21d7 kernel32!UnhandledExceptionFilter+0xe0
05 3211ffd4 77b99ea5 ntdll!RtlKnownExceptionFilter+0xb7
06 3211ffec 00000000 ntdll!RtlInitializeExceptionChain+0x36
这里输入knb没有显示自己的库堆栈信息。
2. 输入kvn,得到更多信息。
# ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
00 3211f0c0 76273520 000003e8 00000000 3211f0e4 ntdll!NtDelayExecution+0x15
01 3211f0d0 75c2270d 000003e8 00000000 00000001 KERNELBASE!Sleep+0xf
02 3211f0e4 75c07890 3211f1b0 00000001 3211f180 kernel32!GetProfileStringW+0x15161
03 3211f0f4 75c0780f 3211f1b0 00000001 52cfe7e1 kernel32!UnhandledExceptionFilter+0x161
04 3211f180 77bd21d7 00000000 77bd20b4 00000000 kernel32!UnhandledExceptionFilter+0xe0
05 3211ffd4 77b99ea5 00403640 16ce9280 00000000 ntdll!RtlKnownExceptionFilter+0xb7
06 3211ffec 00000000 00403640 16ce9280 00000000 ntdll!RtlInitializeExceptionChain+0x36
可以看到红色标注的堆栈异常,需要解析 0x3211f1b0
地址内容。
4. 解析异常地址内容。
0:025> dd 3211f1b0 L2
3211f1b0 3211f2b0 3211f300
这里 3211f300 可以正常解析堆栈的关键。
5. 输入解析命令。
.cxr 3211f300
这样windbg就会自动重新解析这个函数堆栈,并定位到报错的位置。OVER
相关文章推荐
- windbg查看函数参数,调用堆栈,及返回值.
- 用WINDBG查看托管堆栈函数参数的值
- 一种显示函数被调用的堆栈信息的方法
- [WinDBG 技巧] 列举所有Handle(句柄)以及查看Handle 信息
- WinDBG 技巧:显示操作系统信息 (vertarget 命令)
- 网页正常显示 查看网页源代码乱码
- 显示EXE,DLL或PDB文件中指定函数的Parameter和local variables信息
- Page_Load函数执行后界面没有显示执行结果
- 在统计每月信息的时候,有时候该月没有信息,但是还是显示出来
- php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
- WinDBG 技巧:显示操作系统信息 (vertarget 命令)
- WinDBG 技巧: 显示函数的汇编代码(uf 命令)
- 在没有安装vs.net或vs6.0的IE上无法正常显示OWC图表问题的解决方案
- delphi下使用jclDebug,在运行时显示详细的调试堆栈信息的范例
- 没有为任何调用堆栈框架加载任何符号。无法显示源代码
- WinDBG 技巧:显示操作系统信息 (vertarget 命令)
- 系统启动没有声音,音量控制图标不能正常显示,但realplayer能正常播放
- 低级错误,返回的是正常的信息,没有查询到相应的信息
- (旧文重贴)gac搞定了,ngen的时候,不知道为什么,我在explorer中查看的时候,没有显示NativeImage
- WinDBG 技巧: 显示函数的汇编代码(uf 命令)