WSL Ubuntu中调试mbedtls库:是否需用-g参数编译?
关于mbedtls库调试是否需要重新编译的问题
通过apt-get安装的libmbedtls-dev默认仅包含最小化的符号信息,甚至完全不带调试信息,无法满足深入调试库源码的需求,具体分两种情况:
无需重新编译的场景:如果只是需要查看函数调用栈、识别库中的符号,部分发行版会提供单独的调试信息包(后缀通常为
-dbg),你可以尝试安装libmbedtls-dbg:sudo apt-get install libmbedtls-dbg安装后配合你下载的源码,就能在调试器中关联符号和源码,实现基础调试。
必须重新编译的场景:如果需要单步执行库的内部代码、查看所有变量细节、调试复杂逻辑,那必须用
-g参数重新编译源码,同时要关闭编译优化(-O0)——优化后的代码会打乱执行流程、消除变量,导致调试时无法对应源码逻辑。
手动编译带调试信息的mbedtls步骤
- 进入已下载的mbedtls源码目录
- 配置编译参数(两种方式选其一):
# 用CMake的Debug模式(默认自带-g和-O0) cmake -DCMAKE_BUILD_TYPE=Debug . # 或直接用Makefile指定编译 flags make CFLAGS="-g -O0" - 编译并安装到本地目录(避免覆盖系统自带库):
make install DESTDIR=./local_mbedtls - 调试你的程序时,指定链接这个本地编译的带调试信息的库,或在调试器中手动关联库文件与源码路径。
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

