[問題] 遠端GDB問題
大家好~是這樣子
最近正在嘗試使用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
→
11/12 23:54, , 1F
11/12 23:54, 1F
推
11/13 00:26, , 2F
11/13 00:26, 2F
→
11/13 10:29, , 3F
11/13 10:29, 3F
→
11/13 10:30, , 4F
11/13 10:30, 4F
→
11/14 00:03, , 5F
11/14 00:03, 5F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章