寻找ldbb等效的gdb" directory "命令来添加搜索路径以查找缺少的源代码(或者xcode中可能的类似功能)?
提前致谢!
目标:我希望能够分析callgrind(以及后来的cachegrind)的输出,并希望在使用callgrind_annotate CLI时看到有意义的变量名称.
之前的研究:我知道Valgrind中的dsym标志(http://valgrind.org/docs/manual/manual-core.html)并且相信我已经了解调试符号如何在osx上工作(LLDB没有显示源代码).我在这个网站上看到的这个问题的少数提及要么没有得到答复,要么就是没有包含-g标志的情况.
理论(可能是错误的......):基于valgrind输出中的"dym ="行,我想知道valgrind是否正在努力寻找dsym目录的路径."
我可以给你什么数据?
给出以下源代码:
#include <iostream>
#include <cmath>
bool isPrime(int x)
{
int limit = std::sqrt(x);
for (int i = 2; i <= limit; ++i)
{
if (x % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int primeCount = 0;
for (int i = 0; i < 1000000; ++i)
{
if (isPrime(i))
{
++primeCount;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用了以下命令行指令:
g++ -g -c badprime.cpp
g++ …Run Code Online (Sandbox Code Playgroud) 我已经使用 Bazel 构建系统在 Visual Studio Code 中启动了一个 C++ 项目。但是,当使用 Bazel 构建二进制文件时,调试在 IDE 中不起作用。
\n\n我可以在使用 .build 构建时调试应用程序clang++ -g main.cpp -o sample。
我的设置:\n操作系统:MacOS,Bazel:release 0.17.2-homebrew,VS Code:1.27.2
\n\n这是由 Bazel 编译方式造成的。有什么解决方法可以使调试工作吗?
\n\n这是一个最小的例子。只需在编辑器中放置一个断点,运行调试,然后观察断点未被命中:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .vscode\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 launch.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tasks.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 BUILD\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 WORKSPACE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.cpp\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sample.code-workspace\nRun Code Online (Sandbox Code Playgroud)\n\n.vscode/launch.json
{\n "version": "0.2.0",\n "configurations": [\n {\n "name": "(lldb) Launch",\n "type": "cppdbg",\n "request": "launch",\n "program": "${workspaceRoot}/bazel-bin/sample",\n "args": [],\n "stopAtEntry": false,\n "cwd": "${workspaceFolder}",\n "externalConsole": false,\n "MIMode": "lldb",\n "preLaunchTask": "bazel build",\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n.vscode/tasks.json
DWARF是一种调试信息格式.Xcode生成的.dSYM文件包含DWARF调试信息.
问题是:如何解码.dSYM文件以获取人类可读的DWARF信息,如下所示.
