作者donby (东逼)
看板LinuxDev
标题[问题] 远端GDB问题
时间Tue Nov 12 18:39:02 2013
大家好~是这样子
最近正在尝试使用GDB来除错
我写了一个简单的范例想要来测试看看
在机器上使用没啥问题
但利用远端GDB就会跑不出来
不是很懂原因~所以po上来请教大家
test.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void func(char* str)
{
int aa = 10;
char arr[100];
printf("------ aa = %d\n", aa);
memcpy(arr, str, strlen(str));
}
int main(void)
{
char* str = "HelloWorld";
func(str);
return 0;
}
利用指令 arm-linux-gcc -g test.c -o test编出执行档後
在机器上执行GDB:
gdb test
(gdb) run ... ← 接下来使用GDB的指令都没啥问题
不过接下来想要利用远端GDB时却怪怪的
假设主机IP是192.168.0.101,而机器上IP是192.168.0.102
机器上:
gdbserver 192.168.0.101:12345 test
这时会出现讯息:
Listening on port 12345
此时在本机上输入
arm-linux-gdb test
(gdb) target remote 192.168.0.102:12345
这时候在机器上会出现
Remote debugging from host 192.168.0.101
此时若我输入run指令会出现
The "remote" target does not support "run". Try "help target" or "continue".
我知道远端GDB没这个指令~於是照他说的输入continue
结果就出现这个讯息
Program received signal SIGSEGV, Segmentation fault.
0x2aba23c0 in _dl_fini ()
不管输入continue、next都会出现,想要print变数也不能
即使有设定中断点也是 (但list指令是正常的 @@)
但我在机器上执行GDB的时候
只要有先执行run指令
其他的指令,像是list print next continue都是正常的
补充一下我的环境设定
本机: VMware 9 + Ubuntu
tool chain: arm-linux
机器GDB版本: 6.6
arm-linux-gdb版本: 7.2
不知道是不是因为两端的GDB版本不同的关系@@
在此就先谢谢大家的帮忙罗~
--
▍ ▍ ╯╰
╯╰
◢◣ ◢◣ 我最爱的 柏柏龙~ 柏柏龙~
◢██◣ ╮╭
▎▎╮╭
▎▎ 柏柏龙~ 柏柏龙~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龙~
≡ ▼ ≡ ▲▲
● ● ≡ ▼ ≡ ■ ■ ■ ■ 愤怒就永远不会消失~
皿 ◢⊙⊙◣
≡皿 ≡ 皿 炸是最美的拥有~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.179.30
1F:→ ah7675:host端的gdb要另外build, config target=arm 11/12 23:54
2F:推 yvb:楼上认为原PO的 arm-linux-gdb 是什麽东西? 11/13 00:26
3F:→ donby:後来我自己试了一下~好像真的是版本问题@@ 我把本机的和 11/13 10:29
4F:→ donby:机器的都换成7.2的就好了@@ 给大家参考一下罗 11/13 10:30
5F:→ ah7675:喔 没看到那行 拍谢原po, 但甘yvb屁事 自以为了不起 11/14 00:03