如何使用gdb与输入重定向?

51 io gdb

在终端,我有

    myapp < myfileinput
Run Code Online (Sandbox Code Playgroud)

但如果我想使用gdb,

    gdb myapp < myfileinput
Run Code Online (Sandbox Code Playgroud)

它运行不正常.

如何在这里使用gdb?

Abh*_*hek 85

~$ gdb <executable>

GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/abhishek/maxtest...done.

(gdb) run < input.txt
Run Code Online (Sandbox Code Playgroud)

这对我来说很有用.想知道这是不是你想要的.

  • 如果你想在 `main()` 的开头开始调试,也可以与 `start &lt; inputfile` 一起使用。 (4认同)
  • 这 [不适用于 cygwin](https://www.cygwin.com/ml/cygwin/1999-04/msg00304.html) (2认同)
  • 对于多个输入,您可以在 input.txt 中用换行符分隔输入。 (2认同)

sar*_*old 11

尝试从gdb中运行您的应用程序?

(gdb) file /usr/bin/head
Reading symbols from /usr/bin/head...(no debugging symbols found)...done.
(gdb) run -2 < /etc/passwd
Starting program: /usr/bin/head -2 < /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Program exited normally.
(gdb)
Run Code Online (Sandbox Code Playgroud)

编辑:或者:

gdb -q -ex 'set args -2 < /etc/passwd' /usr/bin/head
Reading symbols from /usr/bin/head...done.

(gdb) run
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Program exited normally.
(gdb) quit
Run Code Online (Sandbox Code Playgroud)