2010-11-22 79 views
5

我有一個控制檯應用程序,當輸出重定向到文件時,它會因I/O錯誤6而崩潰。它可能與控制檯應用程序更改文本顏色這一事實有關,這在文件中沒有多大意義。如何調試帶重定向輸出的Delphi應用程序

  • 這工作:c:\dir\app.exe
  • 這種崩潰:c:\dir\app.exe >out.txt

當我提供>out.txt作爲IDE(run\parameters\parameters\)的參數,我只是得到>out.txt作爲參數。

如何使用stdout重定向到文件而不是控制檯來調試應用程序?

回答

12

重定向由命令行解釋器製成,窗口是cmd.exe的

要調試應用程序,只需啓動一個帶有propers參數的cmd.exe來啓動應用程序並重定向輸出,例如:

cmd.exe/c「yourapplication.exe> redirect.txt」

爲了從內部IDE這一點,爲了調試,配置CMD.EXE作爲主機的應用程序(運行/參數):

Run/Parameters dialog

將要停止斷點,並啓動一個新的CMD.EXE(項目/加載過程)與負載動作之後「運行到第一源」:

Load process dialog

大功告成...調試器必須停止在斷點應用。

2

您可以嘗試遠程調試:

  • 在應用程序的開始,增加一個ReadLn;,讓你的時間從內德爾福

    連接到進程
  • 從命令啓動應用程序(指定> out.txt參數)

  • 在Delphi中,連接應用程序進程(Run | Attach to Process...),設置一個斷點,然後切換到應用程序進入一個關鍵

提示:一個斷點調試器也可在代碼中設置:

asm 
    int 3 
end; 
0

確保它沒有因目錄權限而失敗。將輸出文件路徑完全限定在某個可以保證寫入的地方。否則,Windows7可能正在與目錄玩遊戲。 (VirtualStore的東西)。