【问题标题】:LLDB Terminal OutputLLDB 终端输出
【发布时间】:2015-02-12 17:10:56
【问题描述】:

我是第一次使用 LLDB。我正在运行 MacOSX Mavericks。出于某种原因,我无法让 LLDB 打印任何源代码行。相反,输出似乎是汇编指令集。我该如何“修复”这个问题,以便它显示代码?

[c_src]> lldb a.out

当前可执行文件设置为 'a.out' (x86_64)。
(lldb) 断点设置 -n main
断点 1: where = a.out main, address = 0x0000000100000d60
(lldb) 运行
进程 54010 启动:a.out (x86_64)
进程 54010 已停止
* 线程 #1:tid = 0x202742, 0x0000000100000d60 a.outmain, queue = com.apple.main-thread, stop reason = breakpoint 1.1 frame #0: 0x0000000100000d60 a.outmain
a.out`主要: -> 0x100000d60:pushq %rbp 0x100000d61: movq %rsp, %rbp 0x100000d64: subq $2032, %rsp 0x100000d6b: movq 4766(%rip), %rax ; (void *)0x00007fff72d37420: __stack_chk_guard

(lldb) s

进程 54010 已停止 * 线程#1:tid = 0x202742, 0x0000000100000d61 a.outmain + 1, queue = 'com.apple.main-thread, stop reason = instruction step into
frame #0: 0x0000000100000d61 a.out
main + 1 a.out`main + 1:
-> 0x100000d61: movq %rsp, %rbp
0x100000d64: subq $2032, %rsp
0x100000d6b: movq 4766(%rip), %rax ; (无效*)0x00007fff72d37420:__stack_chk_guard 0x100000d72: movq (%rax), %rax

我试图让“s”命令显示它在代码中的位置。

【问题讨论】:

    标签: macos debugging osx-mavericks lldb


    【解决方案1】:

    看起来您还没有使用调试信息构建您的 a.out。例如,如果 lldb 有 a.out 的调试信息,它会在报告 main 处的断点时打印源代码行。

    如果您手动构建 a.out,请记住 -g 标志。如果您使用的是 Xcode,请务必将 Debug Format 设置为 DWARF。

    【讨论】:

    • 它有效。我不敢相信我忘记了命令行上的 -g。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2020-03-26
    • 2020-02-24
    • 2017-09-16
    • 2023-03-03
    相关资源
    最近更新 更多