How to load program reading stdin and taking parameters in gdb?

前端 未结 5 813
不知归路
不知归路 2020-11-28 04:25

I have a program that takes input from stdin and also takes some parameters from command line. It looks like this:

cat input.txt > mypr         


        
相关标签:
5条回答
  • 2020-11-28 04:58

    And if you do not need to debug from the very beginning you can also attach to an already running process by using:

    $ gdb myprogram xxx
    

    where xxx is the process id. Then you do not need to tell gdb the starting arguments.

    0 讨论(0)
  • 2020-11-28 04:59

    For completeness' sake upon starting a debugging session there is also the --args option. ie)

    gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
    
    0 讨论(0)
  • 2020-11-28 05:09

    If you were doing it from a shell you'd do it like this:

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

    This seems to work within emacs too.

    0 讨论(0)
  • 2020-11-28 05:13

    This is eleven year later, and this question has an answer already, but for someone just like me in the future, I just wanted to add some thing.

    After you run gdb your_program, if you just type run < file_containing_input, the program will just run till the end, and you might not catch the problem, so before you do run < file_containing_input do a break. Something like this

    $ gdb your_program
    gdb> break main
    gdb> run < file_containing_input
    
    0 讨论(0)
  • 2020-11-28 05:14

    There are several ways to do it:

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

    or

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

    or

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

    where the gdb run command (r) uses by default the arguments as set previously with set args.

    0 讨论(0)
提交回复
热议问题