我正在尝试调试我正在编写的C++程序,但是当我在LLDB中运行并停止程序时,它只显示汇编程序,而不是原始源代码.例如,崩溃之后我正在尝试调试:
Process 86122 stopped
* thread #13: tid = 0x142181, 0x0000000100006ec1 debug_build`game::update() + 10961, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x0000000100006ec1 debug_build`game::update() + 10961
debug_build`game::update:
-> 0x100006ec1 <+10961>: movq (%rdx), %rdx
0x100006ec4 <+10964>: movq %rax, -0xb28(%rbp)
0x100006ecb <+10971>: movq -0x1130(%rbp), %rax
0x100006ed2 <+10978>: movq 0x8(%rax), %rsi
Run Code Online (Sandbox Code Playgroud)
我正在编译-O0 -g.通过Xcode(我在OSX上)或从命令行运行调试器时,我看到同样的事情.
我还需要做些什么才能让源代码显示在LLDB中?
补充说明
以下是典型构建命令的示例:
clang++ -std=c++1y -stdlib=libc++ -fexceptions -I/usr/local/include -c -O2 -Wall -ferror-limit=5 -g -O0 -ftrapv lib/format.cpp -o format.o
Run Code Online (Sandbox Code Playgroud)
之前-O2是因为那是我正在使用的默认值,但我相信后者-O0会覆盖它,对吧?
我试过的
我用一个简单的'hello world'程序使用相同的构建设置重新创建了这个问题.
经过一些搜索,我试着运行dsymutil main.o …
我正在尝试编译一个名为"unbox"的J编程语言的解释器,可以在以下网址找到:https://github.com/iocane/unbox
它使用tup构建系统和github指令指定使用Visual Studio工具提示符中的tup命令.我下载了Visual Studio 2015社区,但它没有提供说明中提到的确切提示,因此我使用了VS2015 x86 x64交叉工具命令提示符.安装TUP并将其添加到我的道路,我浏览到哪里克隆"拆箱",并键入目录TUP.
但是,这是问题开始的地方,在输入tup后我得到以下内容:
* 1) CC src/libj\a.c
a.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should specify it as an output
*** Command ID=663 ran successfully, but tup failed to save the dependencies.
* 2) CC src/libj\af.c
af.c
*** tup errors ***
tup error: File 'C:\Users\I\AppData\Local\Microsoft\VSCommon\14.0\SQM\VCToolsTelemetry.dat' was written to, but is not in .tup/db. You probably should …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于tup构建系统的内容.
在许多地方,据说tup"不支持递归规则",并且每个目录需要一个Tupfile.但我没有看到官方声明或解释.
上述声明是否正确?
如果是,为什么,以及哪种任务有问题?一个例子很好.