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)
在这里插入图片描述

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