gdbserver用法其實和gdb是一樣的
還要記住一點ubuntu12.04中預設的gdb和arm-linux-gdb是不一樣的。
linux板子:
gdbserver 192.168.1.108:2222 run.exe
ubuntu12.04機子:
arm-linux-gdb run.exe
//如果不加run.exe會沒有symbol的
target remote 192.168.1.108:2222
首先明白gdb是用來幹什麼
先試試gdb是用來幹什麼的,網上資料一大堆。參考:
gdbserver幹什麼的
-某些時候由於模擬環境的限制,除錯必須要在目標板上進行。由於嵌入式系統資源比較有限,一般不能在目標板上直接構建gdb的除錯環境,這時我們通常採用gdb+gdbserver的遠端除錯方法:gdbserver在目標板中執行,而gdb則在主機上執行。
-構建gdb+gdbserver除錯環境的在於,要將gdb和gdbserver都編譯成適用於目標板的版本。比如我們用x86的主機和arm目標板,平時在主機上直接除錯的時候都使用用於x86除錯的gdb,但這個gdb不能用於遠端除錯中,需要針對arm平台進行配置之後重新編譯才行;而gdbserver要執行在目標板上,則需要用arm-linux-gcc編譯才行。
參考:保證arm-linux-gcc和gdbserver版本能相容,能對得上號
編譯gdb或者執行gdbserver 192.168.1.108:2222 run.exe
出現錯誤:gdbserver libthread_db.so.1: cannot open shared object file: no such file or directory
原因: 在linux的板子上沒有gdbserver用到的動態庫libthread_db.so.1 。
解決:我們會想linux板子所用的動態庫會在什麼地方呢?在交叉編譯工具的arm-linux中去找,注意動態庫一般是鏈結ln。將該庫cp到linux板子的/lib目錄下cp libthread_db-1.0.so /lib
,然後ln -s libthread_db-1.0.so libthread_db.so.1
想辦法將gdbserver複製到linux板子上,可以用scp,ftp,tftp等
linux板子:
gdbserver 192.168.1.108:2222 run.exe
ubuntu12.04機子:
arm-linux-gdb run.exe
//如果不加run.exe會沒有symbol的
target remote 192.168.1.108:2222
或者:
#!/bin/bash
/mnt/extdisk1/gcc-linaro-5.4.1-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb \
-ex "target remote 192.168.7.69:2222" \
./lws-minimal-ws-server
假如執行的是arm-linux-gdb
的話並不會出現錯誤,但是沒有symbol的,也就不能設定斷點
./configure --host --target
build: 執行**編譯的主機,正常的話就是你的主機系統。這個引數一般由config.guess來猜就可以。當然自己指定也可以。
host: 編譯出來的二進位制程式所執行的主機,因為絕大多數是如果本機編譯,本機執行。所以這個值就等於build。只有交叉編譯的時候(也就是本機編譯,其他系統機器執行)才會build和host不同。用host指定執行主機。
target: 這個選項只有在建立交叉編譯環境的時候用到,正常編譯和交叉編譯都不會用到。他用build主機上的編譯器,編譯乙個新的編譯器(binutils, gcc,gdb等),這個新的編譯器將來編譯出來的其他程式將執行在target指定的系統上。
學習筆記 使用gdbserver
在micro2440上測試通過,作此文筆記。gdb 6.6.tar.bz2。2 解壓gdb原始碼 比如我的原始碼壓縮包路徑是 home nzq arm rd gdb 6.6.tar.gz cd home nzq arm rd tar vxfz gdb 6.6.tar.gz c src 解壓到.scr...
ARM 交叉編譯 使用gdbserver
1,編譯gdb過程中需要使用texinfo,先安裝texinfo sudo apt get install texinfo 2,解壓配置編譯 arm linux gnueabihf端 host arm linux gnueabihf windows host不用配置,預設即可 configure t...
交叉編譯gdbserver
這才是正宗的,那些git,googlesource,映象,甚至什麼補丁,指令碼等全見鬼去吧。這麼簡單的事為什麼搞那麼複雜呢?裝xx?歷史?tar xzvf gdb 7.11.tar.gz 這才是正宗 包含gdb和gdbserver 1.編譯gdb cd gdb 7.11 configure targ...