當前位置:首頁 » 編程軟體 » gdbserver編譯

gdbserver編譯

發布時間: 2023-03-23 13:44:06

1. gdb主要幫助用戶在調試程序時完成哪些工作

遠程調試環境由宿主機GDB和目標機調試
stub共同構成,兩者通過串口或TCP連接。使用GDB標准遠程串列協議協同工作,實現對目標機上的系統內核和上層應用的監控和調試功能。調試stub
是嵌入式系統中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。就目前而言,嵌入式linux系統中,主要有三種遠程調試方法,分別適用於不同場合的調試工作:
用ROM Monitor調試目標機程序
用KGDB調試系統內核
用gdbserver調試用戶空間程序。
這三種調試方法的區別主要在於:目標機遠程調試stub的存在形式的不同,而其設計思路和實現方法則是大致相同的,而我們最常用的是調試應用程序,就是採用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序,採用GDB方法調試,由於嵌入式系統資源有限性,一般不能直接在目標系統上進行調試,通常采gdb+gdbserver的方式進行調試。Gdbserver在目標系統中運行,gdb則在宿主機上運行。
下載需要用的的軟體包。
一.編譯安裝arm-linux-gdb
<1>#tar jxvf gdb-7.3.tar.bz2
<2>#cd gdb-7.3
<3>#./configure--target=arm-linux --enable-sim --prefix=/usr/local/bin
<4>#make
<5>#make install
二.編譯安裝gdbserver
<1>#cd gdb-7.3/gdb/gdbserver
<2>#./configure --target=arm-linux--host=arm-linux
<3>#make
這樣在gdb-7.3/gdb/gdbserver目錄下就生成了一個gdbserver可執行文件,拷貝到目標開發板上.
三.測試arm-linux-gdb + gdbserver
<1>在超級終端輸入:
#./gdbserver 192.168.100.1:2345 hello
[192.168.100.1為pc機ip地址,2345為監聽埠,hello為待調試程序
這樣在開發板上可以看到如下提示信息:
Process wpa_cli created; pid = 730
Listening on port 2345
表示gdbserver 成功運行等待客戶端的連接信息
<2>在pc機上輸入:
#arm-linux-gdb hello
然後在GDB界面輸入:
#target remote 192.168.100.2:2345
[192.168.100.2為開發板ip地址,2345為開發版監聽埠]
這樣在開發板上可以看到如下提示信息:
Remote debugging from host 192.168.100.1
表示gdbserver成功運行並且建立連接關系,等待客戶端的調試信息。

2. 有沒有編譯好的gdbserver

首先是編譯arm-linux-gdb:
解壓進入目錄後配置並編譯安裝(注意我們這里用的編譯buildroot的arm工具鏈,在/home/max/qemu/buildroot/buildroot-2012.05/output/host/usr/bin/目錄下,可以添加到環境變數,或者修改gdb的Makefile)

3. 嵌入式ARM linux操作系統中如何構建交叉開發環境

這個問題相當專業了,之前我去周立功那邊了解過的。

按照以下步驟進行安裝:

1) 安裝32位的兼容庫和libncurses5-dev庫

在安裝交叉編譯工具之前需要先安裝32位的兼容庫和libncurses5-dev庫,安裝32兼容庫需要從ubuntu的源庫中下載,所以需要在Linux主機系統聯網的條件下,通過終端使用如下命令安裝:

vmuser@Linux-host ~$sudo apt-get install ia32-libs

若Linux主機系統沒有安裝32位兼容庫,在使用交叉編譯工具的時候可能會出現錯誤:

-bash: ./arm-fsl-linux-gnueabi-gcc: 沒有那個文件或目錄

在終端中使用如下命令則可以安裝libncurses5-dev庫。

vmuser@Linux-host ~$sudo apt-get install libncurses5-dev

如果沒有安裝此庫,在使用make menucofig時出現如下所示的錯誤:

*** Unableto find the ncurses libraries or the

*** required headerfiles.

*** 'makemenuconfig' requires the ncurses libraries.

***

Installncurses (ncurses-devel) and try again.

***

make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1

make: *** [menuconfig] 錯誤 2

2) 安裝交叉編譯工具鏈

將交叉編譯工具「gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2」文件通過U盤的方式拷貝到Linux主機的「/tmp」目錄下,然後執行如下命令進行解壓安裝交叉編譯工具鏈:

vmuser@Linux-host ~$ cd /tmp

vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/

vmuser@Linux-host /tmp$ # 輸入vmuser用戶的密碼「vmuser」

執行完解壓命令後,交叉編譯工具鏈將被安裝到「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0」目錄下。交叉編譯器的具體目錄是「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin」,為了方便使用,還需將該路徑添加到PATH環境變數中,其方法為:修改「/etc/profile」文件,具體操作方法如下:

在終端中輸入如下指令

vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示輸入密碼,則輸入「vmuser」

用vi編輯器打開「/etc/profile」文件後,在文件末尾增加如下一行內容:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

文件修改並保存後,再在終端中輸入如下指令,更新環境變數,使設置生效。

vmuser@Linux-host ~$source /etc/profile

在終端輸入arm-fsl-linux-gnueabi-並按TAB鍵,如果能夠看到很多arm-fsl-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確,如下圖所示。

4. 如何在安卓系統上使用arm-linux-gdb調試內核

1,先下載最新版本的gdb源代碼包,我使用的是gdb-7.6.tar.gz,使用tar命令進行解包(tar -xvzf gdb-7.6.tar.gz),cd進gdb-7.6/gdb目錄,使用vi找到remote.c中的如下代碼:
if(buf_len > 2 * rsa->sizeof_g_packet)
error(_("Remote 'g' packet reply is too long: %s"),rs->buf);
將上面兩行注釋掉,添加如下代碼
if(buf_len > 2 * rsa->sizeof_g_packet)
{
rsa->sizeof_g_packet = buf_len;
for(i = 0; i < gdbarch_num_regs(gdbarch); i++)
{
if(rsa->regs[i].pnum == -1)
continue;
if(rsa->regs[i].offset >= rsa->sizeof_g_packet)
rsa->regs[i].in_g_packet = 0;
else
rsa->regs[i].in_g_packet = 1;
}
}
使用如下命令對代碼進行配置、編譯和安裝
./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
make
make install
2,gdbserver使用android4.2模擬器中自帶的版本(v7.1)
3,將NDK編譯好的C/C++可執行程序,上傳到模擬器中/data/test目錄下,假設可執行程序的名稱為testHello。
4,使用命令:gdbserver :7000 /data/test/testHello 啟動模擬器端的調試。
5,啟動arm-linux-gdb之前,使用vi打開~/.bash_profile文件,在其中添加:
export PATH=$PATH:/usr/local/arm-gdb/bin,以便在程序的其他目錄可以直接啟動arm-linux-gdb程序
6,cd至ndk編譯好的testHello文件所在目錄
7,使用如下命令進行埠映射:adb forward tcp:7000 tcp:7000,將模擬器的7000埠和本機的7000埠進行映射
8,使用命令:arm-linux-gdb testHello啟動gdb調試
9,使用target remote :7000 鏈接模擬器中gdbserver啟動的服務。
10,自此,我們就可以使用gdb命令進行代碼調試了。

5. 請教HP UNIX 安裝GDB詳細步驟

(1) download gdb source
ftp://ftp.gnu.org/gnu/gdb/
(2) compile
(2.1) compile gdb
./configure --target=arm-linux -v
make
在gcc4.0中,強制轉換的值不能做左值.
如果您和我一樣用的是gcc 4.0, 那隻好把這幾個慧巧地方修改了,也不知道是不是因為這個原因,有了本文最後面的那個問題。
(2.2) compile gdbserver(這個是要運行在arm上的,所以要進行交叉編譯)
cd gdb/gdbserver
./configure --target=arm-linux --host=arm-linux
把config.h中的以下這一行用//注釋掉
// #define HAVE_SYS_REG_H 1
make CC=arm-linux-gcc
libthread_db.so.1找不到的問題也比較麻煩,可以再把下面這一行注釋掉
/* Define if you have the header file. */
//#define HAVE_THREAD_DB_H 1
(3)
run gdbsever on the ARM board
# gdbserver 1Array2.168.0.2:1254 hello
run gdb on the pc
[root@localhost helloWorld]# ./gdb
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show ing" to see the conditions.
There is absolutely no warranty for
GDB.&嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target
Board端使用gdbserver。調試時,應用程序在嵌入式目標系統上運行,而gdb調試在Host端。
一、編譯安裝gdb+gdbserver
首先下載gdb源碼,我下載的是gdb-6.6.tar.gz。
$tar xvzf gdb-6.6.tar.gz
$mkdir mygdb
$cd mygdb
必須要在你想要安裝的目錄下執行下邊的命令。
$../gdb-6.6/configure --target=arm-linux \ --prefix=/home/a/mygdb
參裂碧州數說明:target是你的目標板,我的是arm-linux,prefix是你要安裝的目標文件夾
$make
$make install
然後建立gdbserver。
$mkdir mygdbserver
$cd mygdbserver
$chmod +x ../gdb-6.6/gdb/gdbserver/configure
$CC=arm-linux-gcc ../gdb-6.6/gdb/gdbserver/configure \
--host=arm-linux --prefix=/home/a/mygdbserver
$make
$make install
$arm-linux-strip gdbserver
去除調試信息。不去好像不行肆蔽,我的就不行,去了就ok了。
復制到你的開發板上就可以了。
二、調試步驟
1、交叉編譯,帶參數-g加入調試信息。
假設要調試的程序為test.c。
#arm-linux-gcc -g test.c -o test
2、在Target Board開啟gdbserver
#gdbserver :2345 test
gdbserver開始監聽2345埠(你也可以設其他的值),然後啟動test,你會看到「Process test created:pid=88」
3、回到Host端
#arm-linux-gdb test
最後一行顯示:This GDB was configured as 「--host=i686-pc-linux-gnu,--target=arm-linux」...
說明此gdb在X86的Host上運行,但是調試目標是ARM代碼。
(gdb)target remote :2345
注意:你的埠號必須與gdbserver開啟的埠號一致,這樣才能進行通信。
建立鏈接後,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用「c」來執行命令,不能用「r」。因為程序已經在Target Board上面由gdbserver啟動了。結果輸出是在Target Board端,用超級終端查看。

6. gdb載入動態庫成功,但是不能顯示動態庫中的源碼(gdb+gdbserver)

因為具體的給的不夠詳細,不清楚你遇到的情況。
如果僅從斷點上看,應該就是CApartment.cpp:55
但是,如果你的程序編譯的時候,不是-O0,那個可能回不到源碼,只能看匯編。
1、有時候(很少)就是編譯器的錯誤。
2、還有可能就是你調試的程序和你的源碼不匹配
3、你的程序已經崩潰了,破壞了堆棧或者GDB需要的數據。
4、這個地方有特殊的定位信息
5、其他情況,還是比較多的,經常遇到。
如果懂匯編,最好看看匯編。
如果不懂,看看那一條語句是最後一條能夠跟蹤的語句。
仔細看看最後一條語句的所有變數,應該能猜出來是什麼問題。

7. 開發板上如何使用GDB

調試時,應用程序在嵌入式目標系統上運行,而gdb調試在Host端。 一、編譯安裝gdb+gdbserver 首先下載gdb源碼,我下載的是gdb-6.6.tar.gz。$tar xvzf gdb-6.6.tar.gz$mkdir mygdb$cd mygdb必須要在你想要安裝的目錄下執凳褲行下邊的命令。$../gdb-6.6/configure --target=arm-linux \ --prefix=/home/a/mygdb參數說明:target是你的目標板,我的是arm-linux,prefix是你要安裝的目標文件夾。$make$make install然後建立gdbserver。$mkdir mygdbserver$cd mygdbserver$chmod +x ../gdb-6.6/gdb/gdbserver/configure$CC=arm-linux-gcc ../gdb-6.6/gdb/gdbserver/configure \--host=arm-linux --prefix=/home/a/mygdbserver$make$make install$arm-linux-strip gdbserver去除調試信息。不去好像不行,我的就不行,去了就ok了。復制到你的開發板上就可以了。 二、調試步驟1、交叉編譯,帶念消參數-g加入調試信息。假設要調試的程序為test.c。#arm-linux-gcc -g test.c -o test2、在Target Board開啟gdbserver#gdbserver :2345 testgdbserver開始監聽2345埠(你也可以設其他的值),然後啟動test,你會看到「Process test created:pid=88」3、回到Host端#arm-linux-gdb test最後一行顯示:This GDB was configured as 「--host=i686-pc-linux-gnu,--棗高簡target=arm-linux」...說明此gdb在X86的Host上運行,但是調試目標是ARM代碼。(gdb)target remote :2345注意:你的埠號必須與gdbserver開啟的埠號一致,這樣才能進行通信。建立鏈接後,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用「c」來執行命令,不能用「r」。

8. android開發,怎麼使用ndk編譯成.so文件

一、首先下載android-ndk,官方網站是:http://developer.android.com/tools/sdk/ndk/index.html
目前最新的版本是android-ndk-r8e-windows-x86.zip,下載地址:
http://dl.google.com/android/ndk/android-ndk-r8e-windows-x86.zip
下載後把壓縮包解壓出來,例如:D:\ndk,目錄下的ndk-build.cmd就是用來編譯的批處理命令。
二、編譯,打開cmd命令行窗口,cd進入目錄:D:\ndk\samples\hello-jni,
然後執行命令:D:\ndk\ndk-build.cmd(如果設置過環境變數則直接使用ndk-build.cmd)來編譯hello-jni,如果沒有錯誤會輸出:
Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
"Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so
三、創建android應用程序並使用so文件
打開eclipse創建一個android應用程序HelloJni,默認的com.example.hellojni包下面有一個MainActivity.java
在此包下添加一個HelloJni.java,

熱點內容
安卓泰拉瑞亞去哪裡買 發布:2025-07-18 20:01:05 瀏覽:694
flash編譯器 發布:2025-07-18 19:49:38 瀏覽:487
memcached源碼分析 發布:2025-07-18 19:22:42 瀏覽:866
android展示圖片 發布:2025-07-18 19:21:24 瀏覽:594
一台伺服器5個IP怎麼分配 發布:2025-07-18 19:12:34 瀏覽:862
貴陽分布式存儲行情 發布:2025-07-18 19:12:31 瀏覽:361
車場伺服器和工控機是如何連接的 發布:2025-07-18 19:10:19 瀏覽:938
計算機編程學什麼好 發布:2025-07-18 19:06:49 瀏覽:410
網吧用的伺服器是什麼伺服器 發布:2025-07-18 18:40:15 瀏覽:938
ftp命令使用 發布:2025-07-18 18:13:05 瀏覽:47