首页 文章

在LLDB初始化时禁用信号

提问于
浏览
6

我的软件使用SIGUSR2信号,我使用LLDB(在Xcode 4.6.2下)作为我的调试器 . 我想禁止LLDB在SIGUSR2停止并且使用以下命令执行此操作:

process handle --pass true --stop false --notify true SIGUSR2

我正在寻找让LLDB始终在启动时执行此命令的方法 . 我已经考虑在我的.lldbinit中添加 settings append target.process.extra-startup-command process 的内容,但是这会改变target.process.extra-startup-command设置的值(由 settings show 命令证明),我不确定是否/如何我可以使用此设置始终执行 process handle 命令以禁用SIGUSR2信号 .

我知道这里发布了"solution":Permanently configuring LLDB (in Xcode 4.3.2) not to stop on signals . 然而,我正在寻找更优雅的解决方案,如果存在的话 .

1 回答

  • 4

    目前,在 main 上的断点命令中执行此操作的建议是最优雅的解决方案 .

    gdb拥有这种世界观,所有进程,无论它们处于何种系统,都会对UNIX信号做出神奇的回应 . 因此,在进程获得SIGINT之前说出会发生什么事情是有道理的 . 在lldb中,该过程在创建时将告诉我们它的信号是什么以及它们的默认行为 . 这很可爱,除了它意味着现在没有自然的地方存储信号行为的配置选项,然后才能进行处理 . 这只是必须添加的东西 .

    触发"process life-cycle events"的能力,不仅仅是"process launch",而是"process exit"和"shared library load"等,这将是一个很好的补充 . 这个功能是提交增强请求(http://bugreport.apple.com/)的好处,因为这样的错误充当了功能的投票 .

    BTW, target.process.extra-startup-command 做了一些完全不同的事情 . 它允许您在我们开始运行之前将一些命令添加到lldb发送到其调试代理(例如debugserver)的序列中 . 它的主要用途是打开更多的debugserver日志记录 .

相关问题