繁体   English   中英

如何调试.exe在Delphi中由另一个.exe启动

[英]How to debug .exe started by another .exe in Delphi

我想调试由App1.exe启动的App2.exe。 如果App2.exe是一个DLL我可以指定一个主机应用程序,但这似乎不适用于.exe。

我现在使用'attach to process',但如果在我这样做之前App2.exe崩溃,这是没用的。

是否有办法通过手动附加到流程来执行此操作?

设置“debug spawned processes”调试选项。 它默认是关闭的。 当App1启动新进程时,调试器将暂停。 如果调试器尚未自动附加到新进程,请附加到该进程,然后继续运行它。

不,但可能有办法让它正确附着。 在碰撞点之前不久找到你知道会在App2中发生的事情,然后让它弹出一个模态对话框。 然后它将不会继续,直到你解雇它,给你时间来附加调试器。

我想你可以自己启动app2.exe并将任何必要的命令行参数传递给它。

如果您使用的是Windows,则会内置支持。 基本上,无论何时启动特定进程,您都可以告诉Windows加载程序启动其他进程。 例如,您可以告诉Windows在您单击notepad.exe时始终启动winword.exe

您可以使用此功能,以便在您启动进程时自动启动调试器(这就是最初引入此功能的原因,但您不限于仅启动调试器:))

你可以在这里准确地阅读如何做到这一点 您也可以下载Windows软件包的调试工具,并使用GFlags为您完成。

如果这两个应用程序都是您的,并且您拥有的代码超出了我的建议:

  1. 为两个应用程序制作调试模式。 例如,使用外部inc文件
  2. 启动两个IDE并在其自己的IDE中加载每个应用程序。 在调试模式下构建
  3. 如果完成,您现在可以调试应用程序之间的内部通信

我有一个项目,服务器生成多个exe工作进程,托管每个自己的dll模块。 我有一个调试模式,我可以在其中指定将加载哪个DLL,我可以让两个进程在IDE之间运行和通信。 这是迄今为止我发现的最好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM