无法启动调试 - Linux 上的 VS 代码中的 C

Can't launch debug - C in VS code on Linux

让我先说明一下,我对 linux 和非 IDE 设置非常陌生。

我正在尝试使用 vs 代码版本 1.55 调试一个非常简单的 C 程序 我事先卸载了所有模块,因此 vs 代码可以加载适当的默认 gcc 和 gdb 版本(它确实这样做了,GCC 8.2) 我正在按照 VS 代码入门 documentation 进行设置,在我尝试调试之前,一切看起来都很简单。 我按照说明使用默认设置,文件构建成功,但随后我得到以下内容

/usr/bin/gdb: symbol lookup error: /usr/bin/gdb: undefined symbol: PyUnicodeUCS4_FromEncodedObject

请注意,我无法按照另一个线程中的建议在启用 ucs4 的情况下重建 python,因为我没有根访问权限。但是,如果有帮助,我可以将 VS 代码版本更改为较早的版本。

谢谢。

我认为这个问题是我的环境特有的,但我会 post 回答,因为它可能会面对其他人。

所以这对我来说是两个不同的问题:
第一个 gdb 没有启动,第二个 vs 代码无法启动 gdb。
要检查是否是这种情况,请尝试通过在终端中键入 gdb 从终端(而不是 vs 代码)启动 gdb(如果需要,在加载 gdb 之后),我收到上面的错误

这部分的解决方案是 this 正如上面 T0maas 所建议的那样
linux 新手的步骤:

  1. ldd gdb(或 /usr/bin/gdb)(已加载 vs_code) 从第一步获取 python 库路径
  2. 卸载所有模块
  3. 加载 gdb
  4. LD_PRELOAD=
  5. bash -c "导出 LD_PRELOAD"
  6. 加载vs_code
  7. 加载 gdb

在上述步骤之后,在终端中写入 gdb 应该会启动 gdb

第 2 部分:
剩下的问题是当我尝试通过 vs_code 的 GUI 启动调试会话时(仍然产生相同的错误)
在终端中(加载 gdb 后)键入 whereis gdb
对我来说,这产生了多个目录,其中第一个是 /usr/bin/gdb(这是 vs_code launch.json 中使用的默认值)
将 launch.json 文件中的那个目录更改为其他目录中的另一个目录为我解决了问题的第二部分。