【问题标题】:process handle in lldbinitlldbinit 中的进程句柄
【发布时间】:2014-10-23 16:46:36
【问题描述】:

我想让以下命令初始化我的 .lldbinit。

process handle SIGPROF -n false -p true -s false

问题是lldb启动时不会运行这个命令,还没有进程。

错误:在命令 #1 之后中止读取命令:' 进程句柄 SIGPROF -n false -p true -s false' 失败并出现错误:没有当前 目标;在你有一个有效的目标之前无法处理信号并且 过程。

我如何告诉 lldb 在有进程时应用此命令?

【问题讨论】:

    标签: linux signals lldb


    【解决方案1】:

    到目前为止,我认为你不能

    允许这样做需要以下两件事之一:

    • 一种模型,其中 LLDB 记录您的偏好并将其应用于出现的流程(仅第一个?全部?)
    • 一个模型,其中 LLDB 具有“事件钩子”,用于处理诸如进程出现、进程消失,您可以编写钩子脚本(通过 LLDB 命令或 Python)来执行某些操作,包括设置信号处理

    【讨论】:

      【解决方案2】:

      对此的一种解决方法是在加载您正在调试的文件后,在 lldb 中运行您想要运行的一组命令,将它们放入一个文件中,然后运行:

      $ lldb -s <command file> <FileToBeDebugged>
      

      那么如果你喜欢这个并且经常使用它,你可以将part的shell别名设为.

      如果您使用 Xcode,一个常见的技巧是在项目的 main 处设置断点,将要运行的命令放在那里,然后使其“自动继续”。

      【讨论】:

      • 哦,当然,我没想到自动继续,好主意。
      • 在 lldb 6.0.0 上对我不起作用:写入 Executing commands in ... 后,当我的命令为 process handle --stop false --notify false SIGUSR1 SIGUSR2 时,它会以 error: No current process; cannot handle signals until you have a valid process. 失败
      猜你喜欢
      • 2014-01-18
      • 2012-08-14
      • 2010-12-30
      • 2017-08-07
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多