我的软件使用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 回答
目前,在
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日志记录 .