我经常运行一个程序:
./a.out arg1 arg2 <file
我想用gdb调试它.
我知道set args功能,但只能从gdb提示符.
我有一个程序从stdin获取输入,并从命令行获取一些参数.它看起来像这样:
Run Code Online (Sandbox Code Playgroud)cat input.txt > myprogram -path "/home/user/work"我尝试使用gcs在emacs中调试代码,通过Mx gdb,我尝试使用以下命令加载程序:
Run Code Online (Sandbox Code Playgroud)gdb cat input.txt > myprogram -path "/home/user/work"但是,gdb不喜欢它.
问题来自这里.不幸的是我不理解解决方案,并且不确定除了使用该-g选项进行编译并运行命令Mx gdb 之外还要做什么.
我正在使用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);
    }
}