如何使用重定向输出调试Delphi应用程序

5
我有一个控制台应用程序,当输出被重定向到文件时会崩溃并显示I/O错误6。这可能与控制台应用程序更改文本颜色有关,在文件中这样做没有意义。
以下命令可以正常运行: c:\dir\app.exe 以下命令将导致崩溃: c:\dir\app.exe >out.txt 当我在IDE的参数中提供>out.txt时,只会将其作为参数返回。
如何在标准输出被重定向到文件而不是控制台的情况下调试应用程序?
3个回答

12

重定向是由命令行解释器完成的,在Windows中它是cmd.exe。

为了调试应用程序,只需启动一个带有适当参数的cmd.exe来启动您的应用程序并重定向输出,例如:

cmd.exe /c "yourapplication.exe >redirect.txt"

为了从IDE中实现这一点以进行调试,在主机应用程序(Run/Parameters)中配置cmd.exe:

Run/Parameters dialog

在您想要停止的位置设置断点,并使用“加载进程”(Project/Load process)启动新的cmd.exe。在加载操作后,“运行到第一个源”:

Load process dialog

完成了...调试器必须在您的断点处停止应用程序。


2
你可以尝试远程调试:
  • 在应用程序开头添加 ReadLn;,这样可以给你时间从Delphi中附加到进程

  • 从命令行启动应用程序(指定参数> out.txt)

  • 在Delphi中连接应用程序进程(Run | Attach to Process ...),设置断点,然后切换到应用程序输入一个键

提示:也可以在代码中设置调试器断点:
asm
  int 3
end;

0
确保它不是由于目录权限失败。将输出文件路径完全限定到您保证能够写入的地方。否则,Windows7可能会与目录玩游戏(VirtualStore).

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接