相关疑难解决方法(0)

如何传递参数并将stdin从文件重定向到程序在gdb中运行?

我经常运行一个程序:

./a.out arg1 arg2 <file
Run Code Online (Sandbox Code Playgroud)

我想用gdb调试它.

我知道set args功能,但只能从gdb提示符.

c++ debugging gdb

209
推荐指数
3
解决办法
16万
查看次数

如何加载程序读取stdin并在gdb中获取参数?

我有一个程序从stdin获取输入,并从命令行获取一些参数.它看起来像这样:

cat input.txt > myprogram -path "/home/user/work"
Run Code Online (Sandbox Code Playgroud)

我尝试使用gcs在emacs中调试代码,通过Mx gdb,我尝试使用以下命令加载程序:

gdb cat input.txt > myprogram -path "/home/user/work"
Run Code Online (Sandbox Code Playgroud)

但是,gdb不喜欢它.

问题来自这里.不幸的是我不理解解决方案,并且不确定除了使用该-g选项进行编译并运行命令Mx gdb 之外还要做什么.

emacs redirect gdb command-line-arguments

95
推荐指数
4
解决办法
6万
查看次数

Java + Eclipse:如何调试接收管道/重定向stdin的java程序?

我正在使用Eclipse开发一个Java程序,并且我想在我的程序中添加一个选项来解析stdin,如果没有参数的话.(否则它解析文件)

如果我执行"somecommand | java -jar myjar.jar"并进行调试,我遇到了问题...然后意识到我不知道如何在Eclipse中启动一个进程.如果我在命令提示符下运行它,我就无法附加到正在运行的进程,因为进程立即启动.

有关如何调试的任何建议?

编辑:看,事情是,我最初编写我的程序采取文件名参数.然后,我想这将是有益的它采取标准输入一样,所以我做了抽象的InputStream我的节目(如队列先生建议).它在文件(java -jar myjar.jar myfile)上运行良好,但在运行时不运行type myfile | java -jar myjar.jar.我怀疑这两种情况有什么不同(eof检测不同?)但我真的想调试.

// overall program structure follows:

public static void doit(InputStream is)
{
    ...
}

public static void main(String[] args)
{
    if (args.length > 0)
    {
        // this leaves out the try-catch-finally block,
        // but you get the idea. 
        FileInputStream fis = new FileInputStream(args[0]);
        doit(fis);
        fis.close();
    }
    else
    {
        doit(System.in);
    }
}
Run Code Online (Sandbox Code Playgroud)

java eclipse stdin

6
推荐指数
1
解决办法
5291
查看次数

标签 统计

gdb ×2

c++ ×1

command-line-arguments ×1

debugging ×1

eclipse ×1

emacs ×1

java ×1

redirect ×1

stdin ×1