我想调试由App1.exe启动的App2.exe。如果App2.exe是一个DLL,我可以指定一个主机应用程序,但这似乎不适用于.exe。
我现在使用'attach to process',但如果在我这样做之前App2.exe崩溃,这是没用的。
有必要手动连接到流程吗?
答案 0 :(得分:5)
设置“debug spawned processes”调试选项。它默认是关闭的。当App1启动新进程时,调试器将暂停。如果调试器尚未自动附加到新进程,请附加到该进程,然后继续运行它。
答案 1 :(得分:2)
不,但可能有办法让它正确附着。在碰撞点之前不久找到你知道会在App2中发生的事情,然后让它弹出一个模态对话框。然后它将不会继续,直到你解雇它,给你时间来附加调试器。
答案 2 :(得分:1)
我猜你可以自己启动app2.exe并将任何必要的命令行参数传递给它。
答案 3 :(得分:1)
如果您使用的是Windows,则会内置支持。 基本上,无论何时启动特定进程,您都可以告诉Windows加载程序启动其他进程。例如,只要单击notepad.exe
,就可以告诉Windows始终启动winword.exe您可以使用此功能,以便在您启动流程时自动启动调试器(这就是最初引入此功能的原因,但您不限于仅启动调试器:))
您可以准确阅读如何操作here。 您也可以下载Windows软件包的调试工具,并使用GFlags为您完成。
答案 4 :(得分:0)
如果这两个应用都属于您,并且您拥有的代码超出了我的建议:
我有一个项目,其中服务器生成多个exe工作进程,这些进程承载每个自己的dll模块。我有一个调试模式,我可以在其中指定将加载哪个DLL,我可以让两个进程在IDE之间运行和通信。这是我到目前为止找到的最佳方式。