Nemiver - 无法重定向标准输入

3

我很喜欢nemiver的这个想法,但是我无法让nemiver的这个基本功能发挥作用:将标准输入重定向到程序。因此,由于我的程序需要文件输入而不是手动输入,通常采取以下形式:

./program < list.txt

但是显然,Nemiver无法识别这个简单的重定向。它将"<"和"list.txt"看作独立的参数。这让我非常沮丧。有没有解决办法?非常感谢!


1
kdbg支持重定向。不幸的是,在最近的Ubuntu版本中,kdbg已经无法使用。kdbg is DOA - Brent Bradburn
kdbg已在Ubuntu 13.10中修复! - Brent Bradburn
2个回答

0

如果您只想进行事后分析(而不需要单步执行),则可以加载崩溃转储(core)文件,该文件可以在任何类型的管道/重定向场景下生成。

( ulimit -c unlimited && ./yourapp <in.txt >out.txt ) || nemiver --load-core=core ./yourapp

只有在崩溃或断言发生时,才会启动调试器。


-1
作为一种快速而不太规范的解决方案,您可以在main()函数的开头添加以下内容...
    {
 // programmatically redirect stdio
    const char * stdin_filename="input.txt", * stdout_filename="output.txt";
    assert( dup2(open(stdin_filename ,O_RDONLY),0) != -1 );
    assert( dup2(open(stdout_filename,O_WRONLY),1) != -1 );
    asm(" int3"); // optional breakpoint -- kills program when not debugging
    }

只需确保在不进行调试时禁用此功能(因为您可能希望在这种情况下使用正常的重定向方法)。

您还需要以下内容...

#include <unistd.h>
#include <fcntl.h>

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