gpt4 book ai didi

signals - LLDB初始化时禁用信号

转载 作者:行者123 更新时间:2023-12-04 08:26:32 26 4
gpt4 key购买 nike

我的软件使用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信号。

我知道此处发布的“解决方案”: Permanently configuring LLDB (in Xcode 4.3.2) not to stop on signals。但是,如果有的话,我正在寻找一种更优雅的解决方案。

最佳答案

目前,建议在main上的一个断点命令中执行此操作,这是目前可用的最优雅的解决方案。

gdb拥有这样一个世界观:所有进程,无论它们位于什么系统上,都可以神奇地响应UNIX信号。因此,有道理地说,当您有了一个进程之前,当进程获得SIGINT时将发生什么。在lldb中,该过程在创建时将告诉我们其信号是什么以及它们的默认行为。这很可爱,除了它意味着现在没有自然的地方可以在您进行处理之前为信号行为存储配置选项。这只是必须添加的内容。

触发“流程生命周期事件”(不仅是“流程启动”,而且还有“流程退出”和“共享库负载”等)的功能将是一个很好的补充。提交此功能的增强功能(http://bugreport.apple.com/)将会是一件很棒的事情,因为类似的错误会成为功能的投票。

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

关于signals - LLDB初始化时禁用信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com