簡體   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