由于嵌入式设备上的资源有限,很多时候我们都不得不使用gdb+gdb Server 的方式代替gdb进行程序调试。相对来说,要使用gdb Server调试程序需要做一些额外的设置。步骤如下:
- 主机与目标机必须在同一网段,能互相访问
- 在目标机上运行gdbserver程序,命令如下:
gdbserver HOST:PORT [app_name] [paramter] [&]
说明:HOST为主机的ip地址,PORT可以是任意指定的一个端口, app_name是应用程序的名称,&表示在后台运行。其中,目标机上的app可以是被strip过的,这样可以节省空间。
- 在主机上运行gdb,命令如下:
gdb app_name
说明: app_name是应用程序的名称。其中,主机上的app必须是在编译时加入过-g 并且未被strip过的。
-
使用如下命令指定共享库的位置。
set solib-absolute-prefix /opt/toolchain/pnx8181/sysroot set solib-search-path /usr/local/arm-linux/minigui/lib
说明:
solib-absolute-prefix 设置文件系统的路径,里面包含的是目标机上程序运行所需要的系统库。
solib-search-path 设置目标机上程序运行时所依赖的库文件,比如未加入到文件系统中的第三方开源库等。
-
连接目标机上的gdbserver。
target remote TARGET:PORT
说明: TARGET为目标主机的IP地址,PORT为前面指定的端口。
-
使用continue命令开始运行目标机上的调试程序并进行调试。
c
说明:不能用run命令,应该用continue命令,因为程序已经开始执行了。