我使用以下命令行在远程armv5目标上运行gdbserver:
./gdbserver --debug --remote-debug --multi :9000
主机是x86 Linux。我正在尝试远程调试示例hello_world.c程序,几乎是一个int main(int argc,char ** argv){printf(" hello world \ n");出口(0); };
我在主机上执行以下操作:
./gdb
(gdb)set sysroot /home/username
(gdb)set verbose on
(gdb)target extended-remote 192.168.1.217:9000
(gdb)file hello_world
(gdb)set remote exec-file /upgrade/hello_world
(gdb)r
输出如下:
Starting program: /home/username/hello_world
Loaded symbols for /lib/ld-linux.3.so
Loaded symbols for /lib/libc.6.so
Breakpoint 1, main (argc=1, argv=0xbe90cdd4) at hello_world.c:50
50 int parm=7;
(gdb) c
Continuing.
[Inferior 1 (process 16721) exited normally]
请注意,主机上没有printf()输出。它只是在断点处停止,然后在我点击“c”时运行完成。
我希望printf中的\ n能够立即刷新缓冲区并产生输出,但由于某种原因,我在主机gdb窗口中看不到它。
有什么想法吗?