Debugging 首次使用windbg调试在没有警告的情况下关闭的进程

Debugging 首次使用windbg调试在没有警告的情况下关闭的进程,debugging,windbg,Debugging,Windbg,我有一个进程,当我点击它的UI上的一个按钮时,启动另一个进程。它产生的这个进程在没有警告或日志中没有任何线索的情况下关闭 我应该如何使用windbg来理解此问题?此外,我应该为符号文件路径放置什么?从MS SYMBOL服务器下载符号。我不确定是否也需要设置一个env变量 谢谢以下是如何找到符号: 通常,最简单的方法是设置环境变量: _NT_SYMBOL_PATH=SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols 请确保在设

我有一个进程,当我点击它的UI上的一个按钮时,启动另一个进程。它产生的这个进程在没有警告或日志中没有任何线索的情况下关闭

我应该如何使用windbg来理解此问题?此外,我应该为符号文件路径放置什么?从MS SYMBOL服务器下载符号。我不确定是否也需要设置一个env变量


谢谢

以下是如何找到符号:

通常,最简单的方法是设置环境变量:

_NT_SYMBOL_PATH=SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
请确保在设置环境变量后启动Windbg,并记住,VS的最新版本也将使用此环境变量,因此它们的调试启动速度往往较慢

我的第一步是尝试将这两个过程分开——如果失败了,你能直接启动失败的一个吗

沉默的戒烟通常是以下情况之一的标志:

  • 堆栈溢出(无限递归)
  • 异常处理程序中的异常(有时)
  • 搞乱WPF应用程序中的主窗口设置顺序

您可以通过在windbg中设置一个选项来附加到创建的进程,该选项将附加到当前进程创建的任何进程。使用“.child_dbg 1”(不确定确切的命令名)。在windbg中启动UI进程后,只需像往常一样单击按钮,然后创建该进程。这将在windbg中中断。一旦这样做了,只需使用“g”命令让流程继续。无论何时子进程退出,您都会在调试器中收到通知。因此,您可以找出进程退出的原因


如果这没有帮助(如果进程通常使用exitprocess退出或使用TerminateProcess终止),您可以在退出函数处设置断点并检查调用堆栈。

如果您负担得起,请通过打开支持票证。支持人员可以为您提供有关如何获取必要信息的详细步骤


使用WinDbg并不是那么简单。除非您是一名优秀的程序员,否则您应该采取简单的方法。

只是补充一点:如果启动WinDbg时没有设置符号路径,您可以在会话期间发出
.symfix
命令进行设置。