使用 Linux 调试
系统依赖
- Python 2 or 3
- GDB 8.3+
- LLDB 7.0+
gdb 版本获取方法
检查当前系统 gdb 版本
gdb --version
GNU gdb (GDB) 10.2
检查 gdb 所使用的 python 版本
$gdb
(gdb) pi
>>> import sys
>>> print(sys.version)
2.7.5 (default, Nov 11 2020, 14:14:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
lldb 版本
检查当前系统 lldb 版本
lldb -version
lldb version 7.0.1
检查 lldb 所使用的 python 版本
$lldb
(lldb) sc
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>> import sys
>>> print(sys.version)
2.7.5 (default, Nov 11 2020, 14:14:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
>>>
准备调试环境
如果你的 Linux 系统还不满足以上要求,需要先安装
设置 gdb 调试环境
使用预编译的 andb-gdb
andb-gdb
是多平台预编译的 gdb 工具,当前版本为 10.2
。
$git clone git@github.com:noslate-project/andb-gdb.git
# 同样需要把 gdb 环境变量加入
$cd andb-gdb
$source env.sh
x86_64-Linux
CentOS 7
CentOS 7 默认安装的 gdb 版本较旧为 7.4
,
推荐使用 Software Collections (SCL) 中 devtoolset-9 软件包中的 gdb,其版本为 8.3-3.el7
# yum 安装 devtoolset-9-gdb 包
$yum install devtoolset-9-gdb
# 使能 devtoolset-9
$source /opt/rh/devtoolset-9/enable
# 版本信息
$gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux 8.3-3.el7
设置 lldb 调试环境
CentOS 7
# 通过 yum 安装 llvm-toolset-7.0-lldb 工具
$yum install llvm-toolset-7.0-lldb
# 使能 llvm-toolset-7
$source /opt/rh/llvm-toolset-7.0/enable
# 版本信息
$lldb --version
lldb version 7.0.1
配置工具
克隆 andb
仓库
$git clone git@github.com:noslate-project/andb.git
将 andb
环境变量加入
$cd andb
$source env.sh
andb loader enabled, please use 'andb' command to start debugging.
使用 andb
检查所使用的路径
$andb
~/demo/andb/loader
一般性调试
采用 gdb
进行调试,并加载 core.pid 文件。
$andb -l -c core.pid
采用 lldb
进行调试,并加载 core.pid 文件。
$andb -g -c core.<pid>
手动调式方法
在调试非官方发行版的 core 文件时,会需要采用手动调试方法,此时需要准备如下文件,并放置在相同目录下,
- 配套的二进制文件,如 node,必须与 core.pid 文件配套。
- 配套的 node.typ 文件,也可以直接采用和官方 release 相同版本的 node.typ 文件。
- core.pid 文件
# 使用 gdb 调试
$andb -g node -c core.pid
# 或 使用 lldb 调试
$andb -l node -c core.pid