我通常运行我的程序:
perl -e 'print "A"x200' | ./vuln_prog
Run Code Online (Sandbox Code Playgroud)
stdin由gets()
C++中的函数使用.
如果这只是一个命令参数,我可以通过执行以下操作打开gdb:
gdb ./vuln_prog
run $(perl -e 'print "A"x200')
Run Code Online (Sandbox Code Playgroud)
但是,我的场景不是命令参数,而是输入(STDIN?).我如何在gdb中调试它?我尝试过很多选项,但似乎没什么用.
我通常只是在进程上运行gdb,当它提示用户输入时,输入它,但是我不想只键入"A".我想输入来自\ x00-\xff的所有字符,我无法输入.
在终端,我有
myapp < myfileinput
Run Code Online (Sandbox Code Playgroud)
但如果我想使用gdb,
gdb myapp < myfileinput
Run Code Online (Sandbox Code Playgroud)
它运行不正常.
如何在这里使用gdb?
说我有两个名为blah和ret的程序.我想调试通过I/O重定向从ret程序接收输入的blah程序.在以下情况下如何使用gdb 调试blah程序?
bash> ret | blah
Run Code Online (Sandbox Code Playgroud) 我有一个程序,我正在尝试使用gdb进行调试.在程序内部,我有方法要求用户使用stdin输入输入.当我在gdb中时,如何输入此输入?这样我就可以追踪我的方法是如何工作的?
我正在尝试让gdb运行带有输入重定向到stdin的程序.例如,没有gdb我会运行这样的程序:
prog < input.txt
Run Code Online (Sandbox Code Playgroud)
现在在gdb中,通常的做法是run < input.txt
.但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin.
我正在使用Windows与MinGW.可能是什么问题呢?
所以我试图调试一个程序,要求用户通过终端输入一些文本:
$ echo 'here is the text' | ./program
Run Code Online (Sandbox Code Playgroud)
如何在GDB中模拟输入?