-
交叉编译GDB工具:
- 确保获取目标平台的交叉编译工具链。
- 下载GDB源码Index of /gnu/gdb,解压 tar -xzvf gdb-<version>.tar.gz
- 在具有目标平台交叉编译工具链的环境中配置和编译GDB:cd gdb-<version> ./configure --target=<target-architecture> --prefix=/<target-sysroot> --with-python=/usr/include/python<version> --enable-64-bit-addr --disable-werror
- 编译make。
-
交叉编译应用程序(带上-g):
- 使用交叉编译器编译应用程序,并带上
-g
选项以生成调试信息。 - 确保应用程序编译不优化或最少优化,以便于调试(例如使用
-O0
)。
- 使用交叉编译器编译应用程序,并带上
-
设置系统的core文件:
- 在
/etc/profile
或用户的.bashrc
文件中设置ulimit -c unlimited
来允许生成core文件。 - 通过
sysctl
配置生成core文件的路径和命名模式,例如:echo 'kernel.core_pattern = /app/core.%e.%p.%t' >> /etc/sysctl.conf
-
sysctl -p /etc/sysctl.conf
- 重新启动系统或重新登录以应用更改。
- 在
-
生成core文件:
运行程序,当它异常退出时,core文件将被生成在配置的目录下。 -
定位问题:
- 使用交叉编译的GDB加载应用程序的可执行文件和core文件:
./cross-compiled-gdb user_app core
- 使用
backtrace
(或简写为bt
)命令查看崩溃时的调用栈。
- 使用交叉编译的GDB加载应用程序的可执行文件和core文件:
-
调试技巧:
- 使用
break
命令在特定函数或代码行设置断点。 - 使用
watch
命令监视变量值的变化。 - 使用
continue
(或简写为c
)命令继续程序执行到下一个断点或结束。
- 使用
gdb调试指南
于 2024-05-30 17:33:07 首次发布