在我的场景中,我使用CLANG/LLVM编译器和LLDB调试器。
由于某种未知的原因,我无法调试C++标准库。我可以单步执行应用程序中定义的符号,但无法执行标准符号,例如std::vector
构造函数。
目前还不清楚这是不正确的配置还是这些工具的限制。在web上搜索,我注意到使用GNU工具链的C++标准库调试在Linux上确实工作得很好。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-std=c++17",
"-stdlib=libc++",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: /usr/bin/clang++"
}
]
}
launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal",
"MIMode": "lldb",
"preLaunchTask": "${defaultBuildTask}"
}
]
}
Microsoft C/C++扩展支持团队指出,这是由于LLDB
的默认配置造成的。事实上,target.process.thread.step-vave-regexp
默认设置为^std::
:
(lldb) settings show target.process.thread.step-avoid-regexp
target.process.thread.step-avoid-regexp (regex) = ^std::
将此设置更改为“
,调试器也可以单步执行标准模板符号。这可以在launch.json
配置文件中配置,方法是添加:
"setupCommands": [
{
"text": "settings set target.process.thread.step-avoid-regexp \"\"",
"description": "Enable stepping into STL"
}
]
或者,也可以通过将此配置放在主目录中的.gdbinit
文件中,在用户级别进行设置:
settings set target.process.thread.step-avoid-regexp ""
问题内容: 我有一个用汇编语言编写的函数,并在64位Linux(Ubuntu)上使用yasm和GCC进行了编译。它只是使用来向stdout打印一条消息,如下所示: 它由使用GCC编译的C程序调用: 生成命令: 这是问题所在: 运行该程序时,它会显示错误消息,并在调用以下命令时立即出现段错误: 用objdump拆解后,我看到调用是用错误的地址进行的: (671是下一条指令的地址,而不是的地址) 但是
我把我的代码作为一个独立的。c文件并阅读,为了调试,该文件必须在一个项目中。因此,我创建了一个空项目,并向其中添加了我的文件,设置了一些断点,当我运行调试器时,我在控制台上看到以下内容: 尝试了一些教程和一些视频,但没有成功。有人知道解决办法吗?有没有更简单的方法来调试. c文件?
就处理编译/链接错误而言,我是一个新手。 我正在使用一个很大的C++代码(还有一些C文件)。我已经成功地在Mac上运行了它,用G++编译。现在我需要在基于Linux的集群上运行它,因为它在我的Mac上太慢了。代码由我必须编译的几个库组成,加上我自己使用这些库的代码。 我可以使用默认的g++编译器编译集群上的所有代码。然而,不幸的是,我已经发现我需要用GCC/4.7.2进行编译,这样代码将与集群上的
我正在使用VS代码来调试使用Windows Subsystem for Linux的'C'代码。我基本上想用一个基于linux的编译器来编译“C”代码,用于操作系统的课程。我已将Visual Studio代码上的默认终端设置为“wsl”。单击debug按钮时,我会得到以下错误“无法开始调试”。miDebuggerPath的值无效“我验证了'gdb'安装在Windows Subsystem for
场景: 我试图在Sabayon Linux下的Visual Studio代码上调试ASP.NET核心项目。当我点击F5时,我得到以下消息: launch.json }
如果你在Electron中遇到崩溃或问题并且你认为它不是由你的JavaScript应用程序引起的,而是由Electron本身引起的,调试起来可能有点棘手,特别是对于不习惯native / C ++调试的开发人员. 然而,使用lldb和Electron源代码,在Electron的源代码中使用断点启用逐步调试是相当容易的. 要求 Electron 的调试版本: 最简单的方法是使用macOS的构建说明中