首页 文章

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

提问于
浏览
88

我有一个程序从stdin获取输入,并从命令行获取一些参数 . 它看起来像这样:cat input.txt> myprogram -path“/ home / user / work”
我尝试用emacs内的gdb调试代码,通过M-x gdb,我尝试使用以下命令加载程序:gdb cat input.txt> myprogram -path“/ home / user / work”
但是,gdb不喜欢它 .

问题来自于here . 不幸的是我不理解解决方案,并且不知道除了使用 -g 选项编译并运行命令M-x gdb之外还要做什么 .

4 回答

  • 0

    如果你是从shell做的,你会这样做:

    % gdb myprogram
    gdb> run params ... < input.txt
    

    这似乎也适用于emacs .

  • 7

    如果您不需要从一开始就进行调试,您还可以使用以下命令附加到已在运行的进程:

    $ gdb myprogram xxx
    

    其中xxx是进程ID . 然后你不需要告诉gdb起始参数 .

  • 25

    为了完整起见,启动调试会话时还有--args选项 . 即)

    gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
    
  • 113

    有几种方法可以做到:

    $ gdb myprogram
    (gdb) r -path /home/user/work < input.txt
    

    要么

    $ gdb myprogram
    (gdb) set args -path /home/user/work < input.txt
    (gdb) r
    

    要么

    $ gdb -ex 'set args -path /home/user/work < input.txt' myprogram
    (gdb) r
    

    其中gdb run 命令( r )默认使用先前使用 set args 设置的参数 .

相关问题