我正在使用第三方封闭源API,它会抛出一个异常,指出"所有命名管道都很忙".
我想进一步调试(而不仅仅是单步执行),这样我才能真正了解幕后发生的事情.
我使用WinDbg转储了这个过程.我现在应该用什么命令来分析这个转储?
谢谢
dav*_*dag 15
您可以按照以下步骤操作以获取异常的概述:
!analyze -v
Run Code Online (Sandbox Code Playgroud)
现在您可以加载异常上下文记录:
.ecxr
Run Code Online (Sandbox Code Playgroud)
而现在......只需看看堆栈,寄存器,线程......
kb ;will show you the stack trace of the crash.
dv ;local variables
Run Code Online (Sandbox Code Playgroud)
根据您获得的线索,您应该遵循不同的方向.如果你想快速参考WinDbg,我建议你这个链接.
我希望你能找到一些有用的命令和信息.
在使用 Windbg 进行事后调试时,在决定深入挖掘的位置之前运行一些通用诊断命令会很有用。这些应该是您的第一步:
.logopen <filename> (See also .logappend)
.lastevent See why the process halted and on what thread
u List disassembly near $eip on offending thread
~ Status of all threads
Kb List callstack, including parameters
.logclose
Run Code Online (Sandbox Code Playgroud)
这些命令通常为您提供所发生情况的概览,以便您可以进一步挖掘。在处理没有源代码的库的情况下,将生成的日志文件连同二进制库的构建 # 一起发送给供应商应该足以让他们将其追溯到已知问题(如果有的话)。
当客户端为现有管道调用 CreateFile 并且所有现有管道实例都繁忙时,通常会发生这种情况。此时CreateFile返回错误,错误码为ERROR_PIPE_BUSY。此时正确的做法是使用超时值调用 WaitNamedPipe 以等待管道实例变得可用。
当多个客户端同时尝试连接到命名管道时,通常会出现此问题。
| 归档时间: |
|
| 查看次数: |
32389 次 |
| 最近记录: |