我有一个流程,当我点击其UI上的按钮时,会启动另一个流程。它产生的这个过程在没有警告或日志中的任何线索的情况下关闭。
我应该如何使用windbg来理解这个问题?此外,我为符号文件路径添加了什么?从MS symbolserver下载符号。我不确定是否需要设置一个env变量。
由于
答案 0 :(得分:1)
以下是查找符号的方法:http://support.microsoft.com/kb/311503。
通常,最简单的方法是设置环境变量:
_NT_SYMBOL_PATH=SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
确保在设置环境变量后启动Windbg,并记住最新版本的VS也将使用此环境变量,因此启动它们的调试速度会慢一些。
我的第一步是尝试将这两个进程分开 - 你能直接启动失败的进程吗?它会失败吗?
沉默戒烟往往是其中一种迹象:
答案 1 :(得分:1)
您可以通过在windbg中设置一个选项来附加到创建的进程,该选项将附加到当前进程创建的任何进程。使用“.child_dbg 1”(不确定确切的命令名称)。在windbg中启动UI流程后,只需像往常一样点击按钮,然后创建流程。这将打破windbg。一旦完成,只需使用“g”命令让该过程继续。每当子进程退出时,您将在调试器中收到通知。因此,您可以找出流程退出的原因。
如果这没有帮助(如果进程正常使用exitprocess退出或使用TerminateProcess终止),则可以在退出函数处放置断点并检查callstack。
答案 2 :(得分:0)
如果您负担得起,请通过http://support.microsoft.com打开支持服务单。支持人员可以为您提供有关如何捕获必要信息的详细步骤。
使用WinDbg并不是那么简单。除非你是一个体面的程序员,否则你应该采取简单的方法。