【问题标题】: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 的东西)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-04
          • 2010-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-17
          相关资源
          最近更新 更多