企业网站做seo的优势,怎么编写自己的网站,wordpress禁用自动更新,营销系统四大系统1.前言
1.在linux下开发#xff0c;免不了使用gdb调试#xff0c;但是linux下开发嵌入式#xff0c;都是跑在ARM板子上的#xff0c;网上有很多GDB的基础教程#xff0c;但是能在ARM开发板用的时候#xff0c;会有各种问题。 比如#xff1a;*.cpp: No such file or di…1.前言
1.在linux下开发免不了使用gdb调试但是linux下开发嵌入式都是跑在ARM板子上的网上有很多GDB的基础教程但是能在ARM开发板用的时候会有各种问题。 比如*.cpp: No such file or directory.这是因为用gcc编译的时候代码还是在本地并没有在arm平台上来。 所以说还是有必要出一个arm端使用gdb教程
2.下载编译gdb服务端(运行在arm端)
1.下载gdb8.3:下载地址 我也试过其他版本的gdb比如说gdb7.6会缺少一些依赖库termcap,搞起来挺麻烦的所以还是推荐使用gdb8.3吧。配置编译安装一步过。
1.解压。
tar -xzf gdb-8.3.tar.gz cd gdb-8.3
2.配置
./configure --prefix$PWD/_install --disable-shared --targetaarch64-himix210-linux --hostaarch64-himix210-linux 记住aarch64-himix210-linux换成自己的编译器
3.编译
make -j8 make install 最后的结果gcore gdb gdb-add-index gdbserver run文件在gdb-8.3/install/bin目录下,拷贝到arm的rootfs中备用。
3.编译gdb服务端(运行在arm端)
1.清理gdb工程
make distclean
2.配置,编译安装
./configure --targetaarch64-himix210-linux --prefix~/.local/bin –program-prefixaarch64-himix210-linux 说明 1.–targetaarch64-himix210-linux 意思是说目标平台是运行于ARM体系结构的linux内核 2.–program-prefixaarch64-himix210-linux 是指生成的可执行文件的前缀比如aarch64-himix210-linux-gdb可选参数 3.–prefix 是指生成的可执行文件安装在哪个目录这个目录需要根据实际情况作选择。如果该目录不存在会自动创建当然权限足够的话
编译安装 make make install
4.使用
4.1前期准备
将之前生成的 gdbserver 调试程序放在目标板上或者通过 nfs 方式运行也可以这样就可以用 gdb 和 gdbserve 远程调用来调试目标板上的程序了。 一般情况 gdbserver 程序较大所以建议采用 nfs 的方式挂载在目标板上运行较好也可以通过 strip 减少 gdbserver 的大小删除程序中符号表、调试符号表信息等
4.2在arm板上运行gdbserver
./gdbserver --remote-debug 192.168.1.100:8005 helloworld 192.168.1.100 为PC开发主机的 IP 地址 8005 是用来作为 gdb 调试监听的端口可自行设置helloworld是编译好的目标操作程序 为了更好地使用 gdb 的调试功能 在编译目标板程序helloworld时需加入gcc -g 选项, 或者CMakelists.txt中添加 SET(CMAKE_BUILD_TYPE Debug) SET(CMAKE_CXX_FLAGS_DEBUG $ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb) SET(CMAKE_CXX_FLAGS_RELEASE $ENV{CXXFLAGS} -O3 -Wall) 4.3 在PC上运行gdb
1、在宿主机上运行 gdb 程序 ./aarch64-himix210-linux helloworld aarch64-himix210-linux-gdb 是编译 gdb 生成安装在 bin 目前录下的文件名称可能因为设置了 –program-prefix 参数有所改变helloworld是和目标板上的 helloworld一样的程序文件 2、进入 gdb 调试状态后连接目标板 (gdb) target remote 192.168.1.102:8005 192.168.1.102 为ARM板的 IP 地址8005 则是 gdb 调试监听的端口 3、连接成功后则开始运行pc机之后根据 gdb 指令设置断点、单步调试等功能进行调试 (gdb) r
5 附GDB常用的调试指令
GDB 调试器提供有大量的调试选项可满足大部分场景中调试代码的需要。如表所示罗列了几个最常用的调试指令包含指令缩写及各自的作用
GDB常用的调试指令 GDB 调试器提供有大量的调试选项可满足大部分场景中调试代码的需要。如表所示罗列了几个最常用的调试指令包含指令缩写及各自的作用
调试指令作 用(gdb) break xxx (gdb) b xxx在源代码指定的某一行设置断点其中 xxx 用于指定具体打断点的位置。(gdb) run xxx (gdb) r执行被调试的程序其会自动在第一个断点处暂停执行(gdb) continue (gdb) c当程序在某一断点处停止运行后使用该指令可以继续执行直至遇到下一个断点或者程序结束。(gdb) next (gdb) n令程序一行代码一行代码的执行。(gdb) print xxx (gdb) p xxx打印指定变量的值其中 xxx 指的就是某一变量名。(gdb) list (gdb) l显示源程序代码的内容包括各行代码所在的行号。(gdb) quit (gdb) q退出。