如何调试ncurses?调试initscr时无法查看C代码的解决办法求助
解决ncurses调试无法查看C代码的问题
你调试时进入系统自带的/lib/x86_64-linux-gnu/libncurses.so.6而非自己编译的库,导致看不到对应C代码,按以下步骤修复:
1. 重新编译带完整调试符号的ncurses
修改configure命令,添加调试相关参数:
./configure --with-shared --with-normal --with-debug --enable-overwrite --enable-debug --enable-trace
--enable-debug会生成包含完整调试符号的库文件,--enable-trace能辅助追踪函数调用流程,更便于调试分析。
编译安装前记得清理旧产物:
make clean make sudo make install
2. 让调试器优先加载你编译的库
系统默认优先查找/lib下的库,需要手动指定优先级:
- 临时生效:调试前执行以下命令,把自定义库路径放到最前面
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - 永久生效:将
/usr/local/lib添加到/etc/ld.so.conf文件末尾,然后执行sudo ldconfig刷新动态库缓存
3. 调试时指定ncurses源码路径
如果gdb仍无法自动关联源码,手动设置源码目录:
在gdb调试会话中执行:
directory /path/to/your/ncurses-6.2/src
将/path/to/your/替换为你实际解压ncurses源码的目录路径。
内容的提问来源于stack exchange,提问作者OnlyWick
相关产品推荐
相关产品推荐

