GDB圖形界面GUI調試器insight編譯使用

0.引言

linux環境上做嵌入式開發經常需要使用GDB,對於習慣用win上的gui的ide來說,剛上手不習慣,這裏嘗試一款GDB的前端GUI工具——insight,使用簡單方便,但是它在常用發行版上沒有編譯好的包,只能自己源碼編譯安裝,這裏做以記錄。我在剛開始編譯時看了一些博客,在處理編譯錯誤的地方很多都修改了源碼,導致後續使用可能存在問題,所以我這裏並不修改任何源碼直接編譯成功,目前使用起來暫未發現問題。

1.下載源碼

insight官網:https://sourceware.org/insight/index.php

git clone --recursive git://sourceware.org/git/insight.git

本文這裏是直接git拉取的最新源碼,編譯完成後版本如下圖所示
在這裏插入圖片描述

2.準備編譯環境

由於insight是通過Tcl/Tk編寫,這裏需要安裝其對應的開發環境,根據源碼中Readme中的描述,可以通過apt包管理器下載tcl, tk, itcl, itk and iwidgets 的環境。

# 編譯構建需要的包
sudo apt-get install autogen texinfo python2.7-dev
#運行依賴的包
sudo apt-get install tcl-dev tk-dev itcl3-dev itk3-dev iwidgets4

這裏附上我編譯好的程序依賴。(我使用的是主機是Ubuntu16.04)。

xiaoming@xiaoming-N550JK:/opt/arm-none-eabi-insight/bin$ ldd ./arm-none-eabi-insight 
	linux-vdso.so.1 =>  (0x00007ffdc6bce000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fba4e452000)
	libtk8.6.so => /usr/lib/x86_64-linux-gnu/libtk8.6.so (0x00007fba4e0f5000)
	libtcl8.6.so => /usr/lib/x86_64-linux-gnu/libtcl8.6.so (0x00007fba4dd46000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fba4da0c000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fba4d7ef000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fba4d5eb000)
	libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007fba4d3c9000)
	libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fba4d1a0000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fba4ce97000)
	libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007fba4c909000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fba4c6e0000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fba4c316000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fba4e66c000)
	libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00007fba4c101000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fba4bebe000)
	libXss.so.1 => /usr/lib/x86_64-linux-gnu/libXss.so.1 (0x00007fba4bcba000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fba4ba98000)
	libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fba4b895000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fba4b5eb000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fba4b3e1000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fba4b1cf000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fba4afcb000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fba4adc5000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fba4aba0000)

3.配置編譯

這裏我們編譯用於嵌入式的所以需要添加選項–target=arm-none-eabi,而–prefix=/opt/arm-none-eabi-insight/.是編譯安裝後存放的位置。我在編譯時發現如果不配置–prefix可以編譯成功,而配置之後總是報錯,後來才查到需要指定目錄後需要指定tcl/tk的目錄才能正確編譯,即選項–with-tcl=/usr/lib/ --with-tk=/usr/lib/

autoconf
./configure --prefix=/opt/arm-none-eabi-insight/. --target=arm-none-eabi --disable-binutils --disable-elfcpp --disable-gas --disable-gold --disable-gprof --disable-ld --disable-rpath --disable-zlib --enable-sim --with-expat --with-python --without-libunwind --with-tcl=/usr/lib/ --with-tk=/usr/lib/
make
sudo make install

這裏再提供一個宿主機上的gdb調試的版本配置

autoconf
./configure --prefix=/opt/insight/. --disable-binutils --disable-elfcpp --disable-gas --disable-gold --disable-gprof --disable-ld --disable-rpath --disable-zlib --enable-sim --with-expat --with-python --without-libunwind --with-tcl=/usr/lib/ --with-tk=/usr/lib/
make
sudo make install

編譯完成後,在/opt/arm-none-eabi-insight/bin目錄內會產生arm-none-eabi-insight文件,運行即可打開insight arm版,同理/opt/insight/bin/insight爲調試主機上的程序的insight。可以自行添加環境變量或桌面啓動器方便使用,這裏就不在贅述。
這裏給出我編譯好的二進制文件
https://download.csdn.net/download/weixin_39871788/11009936
https://download.csdn.net/download/weixin_39871788/11009925
說明:由於需要外部依賴下載使用需謹慎,強烈建議按照博客說明自行編譯,如需下載使用依賴見第二節所示。

4.使用說明

insight接受的命令完全和gdb相同,僅僅是擁有了一個比較簡單的GUI而已,所以之前的運行腳本里的arm-none-eabi-gdb可以直接改爲arm-none-eabi-insight來使用,後續使用內容我再慢慢更新。
(未完待更新,放一張效果圖,我的目標板是野火的imxRT1052)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章