【问题标题】:debug envoy on MacOS with lldb/gdb在 MacOS 上使用 lldb/gdb 调试特使
【发布时间】:2018-12-18 07:12:58
【问题描述】:

我想在 MacOS 上调试 envoy,所以我采取了以下措施:

  1. 我使用命令 bazel build -c dbg 构建 envoy 二进制文件 --apple_generate_dsym //source/exe:envoy-static
  2. lldb -p {pidOfEnvoy},设置断点断点设置--name onConnectionEvent

但是当断点被击中时,源代码不显示。带有 bazel 构建的 MacOS 是否支持此功能?如果支持,我应该添加什么选项来构建短语?

还有,我可以用 Xcode 调试 envoy 吗?

【问题讨论】:

    标签: xcode macos lldb envoyproxy


    【解决方案1】:

    这有两种可能的方式失败。

    (1) lldb 根本找不到调试信息。
    (2) lldb 可以找到调试信息但找不到实际的源文件。

    您可以通过查看包含调试信息的代码的回溯来区分这些情况。如果 lldb 在回溯中没有显示行号,那么您属于第一种情况。如果您看到行号但没有来源,则属于后一种情况。

    按顺序排列:

    1) 查找调试信息:

    看起来您的构建行正在指示 bazel 生成 dSYM,这应该允许您调试二进制文件。

    命令:

    (lldb) 图像列表

    如果 lldb 找到它,将列出二进制文件和 dSYM。检查 lldb 是否找到了您的 dSYM。

    如果没有自动找到 dSYM,您可以在文件系统中找到它,然后执行以下操作:

    (lldb) 添加-dsym

    让 lldb 手动读取它。如果这可行,但您仍然看不到源信息,那么 dSYM 一定是构建不正确,并且没有它应该拥有的所有信息。您可能需要咨询一些边框专家来解决这个问题...

    您可以在此处查看有关如何在 macOS 上处理调试符号的更多详细信息:

    http://lldb.llvm.org/symbols.html

    2) 源信息但没有源文件:

    如果 lldb 看到调试信息但没有看到源,那么您将需要使用 source-map 设置来告诉 lldb 它们在哪里。例如,在此答案中对此进行了描述:

    Attaching sources to a binary dylib in Xcode

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 2012-08-20
      • 2022-06-12
      • 2012-04-15
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-26
      相关资源
      最近更新 更多