在 Linux 环境下使用 VSCode 调试 C/C++ 程序时,出现Could not load source './csu/../csu/libc-start.c': 'SourceRequest' not supported..可能以下的两种原因:
原因1: 代码问题
代码问题,直接运行报错 Segmentation fault (core dumped) ,如果是在函数末尾报错可能就是不合理使用 库指针的问题。
这个问题通常是由于不正确地管理第三方库的指针生命周期导致的。例如,在使用 mysqlcppconn 库时,如果错误地使用智能指针来管理应该由库自己维护生命周期的驱动实例,就会在程序结束时导致段错误。
错误示例:
// 错误做法:使用智能指针管理库的单例对象driver=std::unique_ptr<sql::mysql::MySQL_Driver>(sql::mysql::get_mysql_driver_instance());正确做法:
// 正确做法:获取库的单例对象并由库自己管理生命周期sql::mysql::MySQL_Driver*driver=sql::mysql::get_mysql_driver_instance();解决方案
检查你的代码,确保没有对库要求自行管理生命周期的对象使用智能指针或手动释放操作。这类对象通常是通过工厂方法或单例模式获取的,应该由库自身管理其生命周期。
原因2:不能加载glibc
这个问题是由于 VSCode 调试器无法找到系统库的源代码文件导致的。解决方法是安装 glibc 源代码并正确配置调试环境。
安装 glibc 源代码:
sudoaptinstallglibc-sourcecd/usr/src/glibcls# 查看可用的 glibc 版本sudotar-xvfglibc-2.39.tar.xz# 根据你的系统版本修改版本号2.更改配置:
在
.vscode/launch.json文件中添加或修改cwd字段,指向解压的 glibc 源代码目录。"cwd":"/usr/src/glibc/glibc-2.39",// ls /usr/src/glibc 查看
Could not load source ‘./csu/…/sysdeps/nptl/llibc_start_call_main.h’: SourceRequest not supported · Issue #10206 · microsoft/vscode-cpptools
希望这些解决方案能帮助你解决调试问题!如果问题仍然存在,可能需要进一步检查你的系统环境和调试器配置。