- 论坛徽章:
- 0
|
10可用积分
一个最简单的用scanf的程序:
- #include<stdio.h>
- int main(void){
- int i;
- scanf("%d",&i);
- return 0;
- }
复制代码 编译运行之,如果我直接gdb a.out,那么可以在gdb里面给予标准输入。
但是我现在是想a.out先执行,不做输入,用ps -ef来查找a.out的进程id(例如8783),然后在一个新的窗口里面启动gdb:
- # gdb
- GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
- .......一堆文字
- (gdb) attach 8783
- Attaching to process 8783
- Reading symbols ...又一堆文字
- 0x00f45424 in __kernel_vsyscall ()
- Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.i686 libgcc-4.4.6-4.el6.i686 libstdc++-4.4.6-4.el6.i686
- (gdb) bt
- #0 0x00f45424 in __kernel_vsyscall ()
- #1 0x00891ac3 in __read_nocancel () from /lib/libc.so.6
- #2 0x0082d61b in _IO_new_file_underflow () from /lib/libc.so.6
- #3 0x0082f33b in _IO_default_uflow_internal () from /lib/libc.so.6
- #4 0x0083094a in __uflow () from /lib/libc.so.6
- #5 0x00818653 in _IO_vfscanf_internal () from /lib/libc.so.6
- #6 0x0081ed98 in scanf () from /lib/libc.so.6
- #7 0x08048491 in main ()
- (gdb) r
- The program being debugged has been started already.
复制代码 问题: 我能否在这个gdb的对话中给予a.out一个数字的输入呢,就像我用gdb a.out直接运行一样。
谢谢。 |
最佳答案
查看完整内容
回复 9# ejeker 和权限有关吗?用sudo 或 用root帐号试试
|