【问题标题】:How to debug a Delphi application with redirected output如何使用重定向输出调试 Delphi 应用程序
【发布时间】:2010-11-22 18:15:51
【问题描述】:
当输出重定向到文件时,我有一个控制台应用程序崩溃并出现 I/O 错误 6。这可能与控制台应用程序更改文本颜色这一事实有关,这在文件中没有多大意义。
- 这有效:
c:\dir\app.exe
- 这会崩溃:
c:\dir\app.exe >out.txt
当我在 IDE (run\parameters\parameters\) 中提供 >out.txt 作为参数时,我只得到 >out.txt 作为参数。
如何在标准输出重定向到文件而不是控制台的情况下调试应用程序?
【问题讨论】:
标签:
delphi
debugging
stdout
io-redirection
【解决方案1】:
重定向是由命令行解释器进行的,在windows中是cmd.exe
要调试应用程序,只需启动带有属性参数的 cmd.exe 即可启动应用程序并重定向输出,例如:
cmd.exe /c "yourapplication.exe >redirect.txt"
要从 IDE 内部进行调试,请将 cmd.exe 配置为主机应用程序(运行/参数):
在您要停止的地方放置一个断点,并在加载操作后使用“运行到第一个源”启动一个新的 cmd.exe(项目/加载进程):
你已经完成了......调试器必须在你的断点处停止应用程序。
【解决方案2】:
你可以试试远程调试:
在应用程序的开头,添加一个ReadLn;,让您有时间从 Delphi 中附加到进程
从命令行启动应用程序(指定 >out.txt 参数)
在Delphi中,连接app进程(Run | Attach to Process...),设置断点然后切换到应用程序输入密钥
提示:调试器断点也可以在代码中设置:
asm
int 3
end;
【解决方案3】:
确保它不会因为目录权限而失败。完全限定输出文件路径到您保证能够写入的某个位置。否则,Windows7 可能正在与该目录玩游戏。 (VirtualStore 的东西)。