日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用gdbserver远程调试

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用gdbserver远程调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用gdbserver遠程調試
?
1.默認crosstool交叉編譯器沒有自帶gdbserver,需要自行編譯
到GNU官方FTP下載,目前最新版的是gdb-6.7.1
下載地址:http://ftp.gnu.org/gnu/gdb/
注:若已有gdbserver,可以直接跳到步驟4
?
2.編譯gdbserver
編譯GDB源碼時只需要編譯出gdbserver就可以了,交叉編譯器自帶arm-linux-gdb(client端)可以使用。
gdb-6.7.1
# cd gdb-6.7.1/gdb/gdbserver/
#./configure --host=arm-linux --prefix=/work/install/gdbserver
#make
#make install
這時會在/work/install/gdbserver目錄下生成bin/gdbserver,將其拷貝到nfs文件系統
#cd /work/install/gdbserver
#cp bin/gdbserver /work/nfs/rootfs/bin
?
3.庫問題
這里需要注意的是運行gdbserver還需要libthread_db庫,若你自己做的文件系統內沒有這個庫的話需要從交叉編譯器內拷一個過去。
# gdbserver -h (target)
gdbserver: error while loading shared libraries: libthread_db.so.1: cannot open shared object file: No such file or directory
# cp -avf lib/libthread_db* /work/nfs/rootfs_bluetooth_omap/lib/
`/lib/libthread_db-1.0.so' -> `/work/nfs/rootfs/lib/libthread_db-1.0.so'
`/lib/libthread_db.so.1' -> `/work/nfs/rootfs/lib/libthread_db.so.1'
注:若不知道缺少什么庫可以根據運行時錯誤提示拷貝或者用先用strace跟蹤一下:
#strace -f -F -o strace.log gdbserver -h
#vi strace.log?
發現如下字段:
872?? writev(2, [{"gdbserver", 9}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libthread_db.so.1", 17}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10) = 126
872?? exit_group(127)?????????????????? = ?
得知缺少libthread_db.so.1庫(紅色部分標出)。
?
4.調試過程
1)Target端建立遠程調試服務
# gdbserver 192.168.167.170:1234 obexftp (target)
Process obexftp created; pid = 858
Listening on port 1234
?
2)Host端GDB加載要調試的程序
這里要調試的程序得是交叉編譯過的,并且加了-g參數。不過大部分編譯程序默認就是加了-g參數的,這點可以從編譯時的log看出。
# arm-linux-gdb obexftp
GNU gdb 6.6.50.20070301 (MontaVista 6.6.50-2.0.1.0702865 2007-03-26)
Copyright (C) 2007 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 copying" to see the conditions.
There is absolutely no warranty for GDB.? Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=armv5tl-montavista-linux-gnueabi"...
?
3)連接到目標板調試服務
(gdb) target remote 192.168.167.15:1234
Remote debugging using 192.168.167.15:1234
Error while reading shared library symbols:
Dwarf Error: Can't read DWARF data from '/opt/montavista/pro/devkit/arm/v5t_le/target/usr/lib/debug/lib/ld-2.5.90.so.debug'
0x400007a0 in _start () from /opt/montavista/pro/devkit/arm/v5t_le/target/lib/ld-linux.so.3
注:上面兩行錯誤信息暫時不用管,原因還不清楚,但是暫時發現不影響使用。
連接成功后ARM板上的信息應該是這樣的:
# ./gdbserver 192.168.0.29:1234 arm0702_8.out
Process arm0702_8.out created; pid = 228
Remote debugging from host 192.168.0.29? <----多出這一行
上面這行表示宿主機和開發板連接成功。現在我們就可以在Host端像調試本地程序一樣調試ARM板上程序。不過,需要注意的是這里執行程序要用“c”,不能用“r”。因為程序已經在Target Board上面由gdbserver啟動了。

調試過程如下:
(gdb) b main
Breakpoint 1 at 0x9870: file obexftp.c, line 376.
(gdb) info b
Num Type?????????? Disp Enb Address??? What
1?? breakpoint???? keep y?? 0x00009870 in main at obexftp.c:376
(gdb) c
Continuing.
Error while mapping shared library sections:
/work/install/bluetooth//lib/libobexftp.so.0: No such file or directory.
Error while mapping shared library sections:
/work/install/bluetooth//lib/libc.so.6: No such file or directory.
Breakpoint 1, main (argc=1, argv=0xbed0dec4) at obexftp.c:384
384???????????? if (strstr(argv[0], "ls") != NULL)????? most_recent_cmd = 'l';
(gdb)
若產生這個錯誤主要是由于該調試的應用程序使用到了額外的庫,而這個庫在gdb默認的搜索路徑內沒有
(相對與遠程調試,gdb默認搜索的路徑即為交叉編譯器的庫路徑,下面我會介紹到)
因此,這里我們需要修改一下gdb默認的共享庫搜索路徑。
修改的辦法是設置GDB的環境變量:
(gdb) show solib-absolute-prefix
The current system root is "/opt/montavista/pro/devkit/arm/v5t_le/target".
上面這個路徑即GDB默認的絕對搜索路徑,即交叉編譯器庫路徑
(gdb) show solib-search-path
The search path for loading non-absolute shared library symbol files is .
(gdb) set solib-search-path /work/install/bluetooth/lib
這個路徑為若在solib-absolute-prefix指定的路徑內沒有搜索到庫,則再繼續嘗試從該路徑進行搜索。
這點倒有點類似于系統默認庫搜索路徑與LD_LIBRARY_PATH的關系。
詳細參考GDB手冊中相關部分:
http://wiki.chinaunix.net/index.php/GDB_Manual_15_1

設置好solib-search-path后再運行程序:
(gdb) set solib-search-path /work/install/bluetooth/lib/
(gdb) c
Continuing.
Error while reading shared library symbols:
Dwarf Error: Can't read DWARF data from '/opt/montavista/pro/devkit/arm/v5t_le/target/usr/lib/debug/lib/ld-2.5.90.so.debug'
Breakpoint 1, main (argc=1, argv=0xbe896eb4) at obexftp.c:384
384???????????? if (strstr(argv[0], "ls") != NULL)????? most_recent_cmd = 'l';
(gdb) l
379???????????? char *output_file = NULL;
380???????????? char *move_src = NULL;
381???????????? /* char *inbox; */
382
383???????????? /* preset mode of operation depending on our name */
384???????????? if (strstr(argv[0], "ls") != NULL)????? most_recent_cmd = 'l';
385???????????? if (strstr(argv[0], "get") != NULL)???? most_recent_cmd = 'g';
386???????????? if (strstr(argv[0], "put") != NULL)???? most_recent_cmd = 'p';
387???????????? if (strstr(argv[0], "rm") != NULL)????? most_recent_cmd = 'k';
388
(gdb)
運行成功
?
?
注:使用GDB調試時查看代碼不是很方便。CLWEN使用VIM作為GDB前端界面,結合gdb的遠程調試功能,動態的將程序當前運行的代碼顯示在VIM上,查看起來十分方便。其遠程調試方法和GDB+GDB Server一樣,但是多了一個GUI界面(VIM)。

轉載于:https://www.cnblogs.com/li-hao/p/3171267.html

總結

以上是生活随笔為你收集整理的使用gdbserver远程调试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 9l视频自拍九色9l视频成人 | 欧美青青草 | 亚洲高清二区 | 日本一本一道 | 玩偶姐姐在线观看免费 | 校园伸入裙底揉捏1v1h | 国产亚洲系列 | 黄色你懂的| 在线视频自拍 | 极品尤物一区二区三区 | 精产国品一二三产区m553麻豆 | 国产激情精品一区二区三区 | 特黄三级 | 黄色av网站在线免费观看 | 日本男人的天堂 | 丰满少妇毛片 | 午夜视频福利在线 | 蜜乳av一区二区三区 | 国产精品久久777777 | 国产一区二区三区在线播放无 | 最新av免费观看 | 亚洲综合色网 | 国产成人精品女人久久久 | 日本免费不卡一区二区 | 男女免费网站 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 精品一区二区三区视频在线观看 | 性色AV无码久久一区二区三 | 波多野结衣三区 | 午夜激情婷婷 | 在线观看天堂av | 国产精品偷乱一区二区三区 | jul023被夫上司连续侵犯 | 欧美肥老妇 | 久久久久亚洲av无码a片 | av中文字幕免费 | 久久99精品久久久水蜜桃 | 99re这里只有精品在线 | 亚洲中文字幕无码av永久 | 国产精品无码自拍 | 欧美黄网站 | 成人免费区一区二区三区 | 国产精品电影在线观看 | 国产素人在线 | 日韩欧美一区二区区 | 日韩精品第一页 | 日本黄色三级网站 | 午夜精品久久久久久久久久久久 | av夜色| 日本网站在线免费观看 | 中文字幕在线观看你懂的 | 欧美激情视频在线观看 | 久久久精品毛片 | 久久精品人妻一区二区三区 | 毛片综合| 天天色宗合 | 小sao货水好多真紧h无码视频 | 先锋资源av在线 | 欧美在线激情视频 | 720url在线观看免费版 | 日韩专区中文字幕 | 国内av在线 | 国产盗摄视频在线观看 | 久久伊人超碰 | 亚洲国产精品狼友在线观看 | 少妇自拍视频 | 91 在线观看| 久久99精品波多结衣一区 | 久久激情av | 无码人妻精品一区二区 | 99热这里只有精品在线 | 亚洲福利影院 | 九色porny自拍视频 | 日韩亚洲在线 | 亚洲精品一区二区18漫画 | 红桃成人网 | 欧美精品18 | 日韩美女视频在线观看 | 久久影业 | www.成人在线 | 波多野结衣久久精品 | 国产成人精品网 | 黄色工厂在线观看 | 欧美操女人 | 中文字幕一区二区人妻 | 亚洲综合久久网 | 精品无码国产污污污免费网站 | 免费看的黄色网 | 久久久久久久久久久久久久久久久久久 | 国产精品久久久无码一区 | 娇小6一8小毛片 | 九九色九九 | 2022av在线 | 色婷婷香蕉在线一区二区 | 无码国精品一区二区免费蜜桃 | 精品国产乱码久久久久久蜜柚 | 国产精品免费网站 | 日韩伦人妻无码 | 96视频在线观看 |