我正在使用:
我的项目是一个C ++项目,结构如下:
我在子项目“/ home / lvier / mainProject / fooProject”和“/ home / lvier / mainProject / build / fooProject”中有很多子程序(比方说) “foo”,“foo_sub1”,“foo_sub2”......)。
我的目标:
我想启动程序“foo”(启动所有其他foo_sub程序)然后,我想通过附加调试某个子程序(让我们说“foo_sub1”)。只要我可以调试子程序“foo_sub1”,我也可以在同一时间启动和调试。主项目本身不包含任何可执行文件。
几个月前,调试正在使用“附加”。对我来说,不再工作(因为VSCode更新和/或C / C ++扩展更新)。这是我的问题:
假设“foo”正在运行。 当使用“C ++ Attach”-config并设置“request”:“attach”(它被突出显示为“不是可接受的值”)时,如果未设置,它将询问属性“processId”。如果我设置“processId”,则会弹出错误“Attach not supported”。 如果我使用“C ++ Attach”-config和“request”:“launch”(在开头这是由C / C ++ - 扩展自动生成的),那么程序找到进程id,尝试附加但是随后中止消息“无法启动调试。只有在进程停止时才接受命令。” - 多么令人惊讶。
假设“foo”尚未运行。 使用“C ++ Launch”-config时,程序启动但不显示UI元素。相反,它从一个新的终端弹出开始,其中显示“警告gdb未能设置控制终端操作不允许”短暂,并且在VSCode的内部控制台中,它表示它停在某些代码行(我没有定义的断点)和打印 “由于共享库事件而停止(未添加或删除库) 加载'/lib64/ld-linux-x86-64.so.2'。符号已加载。 [使用libthread_db启用的线程调试] 使用主机libthread_db库“/lib/x86_64-linux-gnu/libthread_db.so.1”。“ 从那里我无法继续,我必须手动终止该程序。
当我在没有VSCode的情况下使用GDB时,即仅使用本机终端,我的程序正常启动但是使用VSCode,目前似乎存在一些问题。
这是我当前的自动生成配置,我只编辑了“cwd”和“program”路径(假设环境变量“$ {env.build_foo}”设置为“/ home / lvier / mainProject /建造/ fooProject“):
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x64",
"program": "${env.build_foo}/foo",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
},
{
"name": "C++ Attach",
"type": "cppdbg",
"targetArchitecture": "x64",
"request": "launch", // <-- "attach" is not allowed (anymore)! :(
"program": "${env.build_foo}/foo_sub1",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"processId": "${command.pickProcess}",
"externalConsole": false,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
}
]
}
到目前为止,我真的很沮丧,仍然不想放弃VSCode(我不想再切换到另一个IDE)。我已经搜索了很多其他问题,并尝试设置一些其他配置属性,但没有一个帮助。
是否还有其他人在调试器中遇到此类问题,或者这是扩展程序的一般问题(...和Ubuntu 16.04)? 我很高兴任何帮助或方便的解决方法。提前谢谢!
注意: 我还在相关的github页面上创建了一个线程(参见https://github.com/Microsoft/vscppsamples/issues/115)
2016年7月26日更新: 看起来C / C ++扩展有一个错误(参见上面github链接中的注释)。它仍在调查中。
答案 0 :(得分:0)
这里解决:
...在我从链接器设置中删除了GCC -s标志(带状符号表和重定位信息)之后,调试对我而言便起作用了。
< / p>
从下一个链接的最后一个答案中得到它(感谢HorstBaerbel):
https://github.com/Microsoft/vscode-cpptools/issues/115#issuecomment-299334301