如何告诉 LLDB 将信号传递给程序

2023-11-23

我在 lldb 中为安装在 MacOS 上的基于 C 语言的应用程序设置了很多断点。断点大多设置在应用程序的同一函数中。然而,第二天我回到应用程序继续处理它,并开始在同一个函数中再次设置断点,出现了一个问题,断点不是发生在应用程序函数内部,而是发生在其中一个函数中。应用程序的底层库,每次我尝试中断该函数时(即它在底层库中停止),它都会一遍又一遍地执行此操作,并且我无法通过单步执行来达到所需的功能(每次我单步执行时) ,它只是在底层库中前进)。

Update:

我设置断点的函数是从信号处理程序中调用的。例如,当我发送 SIGINT 信号时,信号处理程序会调用应用程序中的一些函数进行清理,并且我在清理的这些函数之一上设置断点。有时,LLDB 会在我设置断点的函数中停止(使用stop reason = breakpoint 1.1) ,有时它会停止在底层/包含的事件处理库中stop reason = signal SIGSTOP并且,如果是后者,如果我按“c”(希望继续到应用程序中的断点并退出事件处理库),只有有时它才会让我继续到所需的断点,有时它只是说“进程 41524恢复”,我永远无法到达所需的断点。


啊,那么我认为问题不在于断点,而在于你的信号处理程序是否真正被调用。

大多数调试器都有某种方法来控制接收到信号时发生的情况。在 lldb 中,这是通过以下方式完成的process handle命令。例如:

(lldb) process handle SIGSTOP
NAME         PASS   STOP   NOTIFY
===========  =====  =====  ======
SIGSTOP      false  true   true 

这意味着当您的进程收到 SIGSTOP 时,lldb 将停止,并通知您有关 SIGSTOP 的信息,但不会将 SIGSTOP 传递给您正在调试的程序(因此您的处理程序不会被调用 SIGSTOP。)process handle不带参数将为您提供所有信号的行为列表。

默认情况下,我们不会传递 SIGSTOP,因为调试器将其用于其自身目的,因此您可能会收到并非来自“真实”SIGSTOP 的处理程序的调用。出于同样的原因,SIGINT 也是如此:

(lldb) process handle SIGINT
NAME         PASS   STOP   NOTIFY
===========  =====  =====  ======
SIGINT       false  true   true 

您可以轻松更改此行为,例如 SIGINT:

(lldb) process handle SIGINT -p true
NAME         PASS   STOP   NOTIFY
===========  =====  =====  ======
SIGINT       true   true   true 

然后调试器会将 SIGINT 传递给进程,并且它将在您的处理程序中停止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何告诉 LLDB 将信号传递给程序 的相关文章

  • 在Android与iOS中使用LLDB调试Rust程序

    在Rust中通过println 打印的日志信息在Xcode中可以显示 xff0c 但是Android Studio里不显示 所以Android可以使用android logger实现日志输出 但是开发中仅使用打印日志的方式进行调试还是不够的
  • Android Studio 2.2.2 LLDB 2.2 更新问题

    今天我将我的android studio更新到版本V 2 2 2 当我尝试使用本机代码 app native 调试我的 Android 应用程序时 我总是收到错误消息 C 调试器包丢失或不兼容 是否要修复它 更新到 lldb 2 2 后 当
  • 如何从 lldb 调试器类型切换到 gdb 调试器类型?

    我已经找了很长一段时间试图找出如何从 lldb 切换到 gdb 但找不到任何关于如何在 Xcode 6 1 中在两者之间切换的信息 我正在尝试调试我的应用程序 如果我使用 gdb 而不是 lldb 我也许能够弄清楚它 但我不知道它是否会对我
  • 我如何在 iOS 中读取 ptr_refs 给出的引用?

    打印参考文献列表时ptr refs 它给出了一些模糊的结果 至少在 iOS 中 例如 我有一个带有这个小应用程序的示例应用程序ViewController类和恰好一个对 a 的出口引用UILabel实例 import UIKit class
  • 错误:在“UIView *”类型的对象上找不到属性“frame”

    我正在调试我的代码并尝试使用以下方法计算视图的大小 p view frame size height 但我收到此错误 错误 在 UIView 类型的对象上找不到属性 frame 错误 1 解析表达式时出错 你们中的任何人都知道为什么或者如何
  • Qt Creator 无法在 Mac 上启动调试

    最近 我怀疑某些系统 自制程序更新 Qt 的调试器停止工作 它永远挂在Setting up inferior 内部日志 dStart parameters QGIS mode 1 dABI x86 darwin generic mach o
  • 在 xcode 中使用调试器 Commend 跳转断点

    我在 Xcode 中使用跳转命令设置了一个断点来强制传递某些条件 但是当它执行到第 168 行时 它崩溃并显示消息 Thread 1 EXC BAD ACCESS code 1 address 0x1 为什么会发生这种事 控制台记录 警告
  • 如何从应用程序内执行调试器命令

    在运行时我试图恢复一个函数的地址未出口但可以通过共享库的符号表获得 因此对调试器可见 我正在研究需要捕获某些事件并操纵运行时的高级调试程序 其中一项操作需要了解私有函数的地址 仅地址 该地址在其他地方用作密钥 我当前的解决方案在构建时计算该
  • Xcode 无法读取当前工作目录中项目特定的 .lldbinit

    我想设置项目特定的 lldbinit 文件 以便 所有内容 都处于版本控制之下 并且可以在新计算机中轻松设置 然而似乎我只能读取 lldbinit 文件而不是任何 git project lldbinit 文件 LLDB手册说 lldb 将
  • Qt 调试器在 Mac 上运行时卡住

    我昨天更新了 Xcode 现在我无法在 Qt 中调试代码 因为它总是卡在 运行 状态 我在 Mac OS X 10 10 5 和 Xcode 7 0 上使用 LLDB None
  • 使用 lldb 在 Xcode 中单步调试时调试另一个选择器

    我的代码停在 lldb 提示符处的断点处 我可以向对象发送消息并将其值打印在控制台上 lldb p self computePI float 1 3 0 哇 此时有些问题 我希望能够进入computePI作为找出哪些变量被搞乱的捷径 但是
  • lldb 可以与 fortran 一起使用吗?

    我正在尝试对 Fortran 程序设置断点lldb在 Mac OS 10 12 5 系统上 我有 program badcall integer a b a 2 b 3 write a b end I have to 使用英特尔编译器进行编
  • 如何在 lldb 中实时运行脚本上转储 PHP 回溯?

    我正在玩LLDB 调试器 https en wikipedia org wiki LLDB debugger 我做了以下实验 运行 PHP 脚本 php r sleep 1000 or php r function r sleep 1000
  • 如何获取 LLDB 中所有线程的回溯?

    LLDB 相当于什么thread apply all bt in GDB LLDB对应的命令很简单bt all See https lldb llvm org use map html examining thread state http
  • 如何从 lldb 执行一个块(由指针标识)

    我在 iOS 模拟器的 lldb 调试器中 并且有一个块的地址 我想尝试执行它 我尝试了想到的第一件事 见下文 但它不起作用 有没有办法做到这一点 lldb po 0x2c7140 int 2 2912576 lt NSGlobalBloc
  • 在 Cocoa 程序中访问 Swift REPL

    我可以将 LLDB 附加到用 Swift 编写的程序并访问 REPL 无论是从 Xcode 内还是通过运行 lldb n ProcessName lldb repl 1 gt 但是 如果我将 LLDB 附加到没有 Swift 运行时的进程
  • c++: LLDB + Python - 如何在 python 脚本中打印 std::string

    我正在尝试 LLDB python 以便更好地将 json 字符串打印到文件中 对于给定的 std string 变量 称为缓冲区 我在 python 断点脚本中尝试了以下操作 以便漂亮地打印到文件中 全部都不成功 json dump fr
  • iOS 模拟器应用程序的终端命令行调试?

    是否可以在 Mac OS X 下的终端命令行中使用 GDB 或 LLDB 来调试在 iOS 模拟器上运行的应用程序 例如 不是从 Xcode 的 GUI 或控制台内部 而是使用外部命令行或进程 如果是这样 怎么办 您需要在模拟器的 Spri
  • 如何在Xcode lldb中打印超过256个数组元素?

    当我使用p or print它只会打印前 256 个元素 我怎样才能打印所有这些 您可以告诉 lldb 强制打印特定表达式求值的所有数组元素 lldb expr A array variable 您还可以通过运行以下命令来提高默认打印的最大
  • 如何修复 lldb 在运行调用后立即停止的问题?

    我在 Mojave 上使用 lldb 和 Xcode 10 2 1 一旦命令 运行 到 lldb 就会发生这种情况 lldb target create

随机推荐

  • Hibernate 升级:StatisticsService()

    我正在将 hibernate 从 3 6 升级到 4 3 5 更换后 jar文件和一些已弃用的包 类以及基本数据类型我仍然遇到一些错误StatisticsService 在org hibernate jmx包裹 错误如下 1 error p
  • Ruby on Rails:在布局中的特定位置生成特定视图

    如果我有一个标记 然后我的所有视图都会呈现在布局中的同一位置 我可以有不同的吗不同视图的标签 那我该怎么办呢 谢谢 调查ActionView Helpers CaptureHelper 您可以在您的视图中执行以下操作 这将在 content
  • 复制 QTableView 的一部分

    因此 我有一个问题与我在这里看到的另一个问题非常密切相关 但当我尝试在那里提出我的问题时 我没有得到答复 我希望通过提出这个新问题 有人可以帮助我 基本上我只想复制我创建的表格的一部分 以便我可以将其粘贴到 Excel 文件中 这是我所拥有
  • Python 中的 SSLSocket 密码/密码

    我最近一直在考虑为我的一个应用程序制作 iOS 推送通知服务 它有一个 Python 2 7 后端 所以我想用 Python 而不是 PHP 或其他任何东西 来完成它 我有发送通知并且设备接收通知的代码 但是每次运行该代码时 它都会要求我手
  • 如何将 Javascript 日期时间转换为 C# 日期时间?

    我一直在读到 如果你想从 JavaScript 日期转换为 C 日期 你应该使用getTime 然后将该结果添加到 C DateTime 假设我有这样的 JavaScript 时间 Date Tue Jul 12 2011 16 00 00
  • 如何为iPhone创建一个黑色渐变的UIButton?

    我想在 iOS 中创建一个具有普通黑色渐变主题的 UIButton 我查看了文档 似乎不知道如何执行此操作 当我创建按钮时 我得到一个没有颜色的圆角矩形按钮 这是我的代码 UIButton leagueTeamButton UIButton
  • C++ 当从函数返回结构体时,汇编中实际发生了什么?

    我试图弄清楚如果从函数中按值返回结构 而不是返回指向该结构的指针 那么在 C 中实际会发生什么 如果函数只能返回适合寄存器的值 那么当按值发送结构时 如何进行通信 我在某处读到过 我尝试在 Godbolt 上测试它 看看它在做什么 但我不了
  • SSL_connect 返回=1 errno=0 状态=错误:证书验证失败(无法获取本地颁发者证书)

    我正在尝试从我的应用程序发布到网络服务 但经常收到以下错误 SSL connect returned 1 errno 0 state error certificate verify failed unable to get local i
  • 如何使用 doc 任务生成 scaladoc 后运行 bash 脚本?

    我有一个简短的 Bash 脚本 它对我的 Scaladoc 注释进行查找和替换 以便生成第三方库的外部文档的链接 我希望每次使用以下命令生成 Scaladocs 时都运行此脚本doc task 我怎样才能实现这个目标 这实际上很容易 首先
  • Newtonsoft JSON 序列化 byte[] 属性 [重复]

    这个问题在这里已经有答案了 public class MyClass public byte Bytes get set MyClass obj new MyClass obj Bytes new byte 1 22 44 55 strin
  • HTML5 音频 - currentTime 属性不准确?

    我正在研究一下 HTML5
  • 逐行测试多个(并非所有)列是否相等

    我想按行检查多列是否全部相等 我想出了一种复杂的方法来计算每组每个值的出现次数 但这似乎有些 麻烦 样本数据 sample df lt data frame id letters 1 6 group rep c r l 3 stringsA
  • 比较两个音频文件[重复]

    这个问题在这里已经有答案了 基本上 我有很多代表同一首歌的音频文件 然而 有些歌曲的质量比原曲差 有些经过编辑 与原曲不再相符 我想做的是以编程方式将这些音频文件与原始音频文件进行比较 看看哪些音频文件与该歌曲匹配 无论质量如何 直接比较显
  • 加载 MySQLdb 模块时出错“您安装了 mysqlclient 还是 MySQL-python?”

    我正在使用 Windows 10 命令行使用 python34 进行 django 项目 但是 我在 SQL 方面遇到了困难 我已经使用安装了 mysqlclientpip install mysqlclient 1 3 5并找到了该文件以
  • 检查 Python 字典列表中是否已存在值?

    我有一个 Python 字典列表 如下所示 a main color red second color blue main color yellow second color green main color yellow second c
  • 没有名为“tensorflow.keras.layers.experimental.preprocessing”的模块

    代码下面 import numpy as np np random seed 0 from sklearn import datasets import matplotlib pyplot as plt matplotlib inline
  • 位域,为什么要特定于实现?

    C C 位域似乎在硬件驱动程序和二进制网络传输中有很多应用 然而 它们似乎没有被广泛使用 并且通常不被鼓励 因为实际的二进制布局是特定于实现的 如 C99 标准 6 7 2 1 10 结构和联合说明符 中的引用所示 实现可以分配足够大的任何
  • removefromsuperview是否释放scrollview的对象?

    for UIView subview in scrollView subviews NSLog subviews Count d scrollView subviews count subview release subview remov
  • 如何让图标出现在新窗口中?

    我正在打开一个新窗口 向其中注入正文和头部的 HTML 问题出在标题部分 HTML 包含标题和图标 但图标不显示 这是代码和 jsFiddle https jsfiddle net ufnjspgc function Start TheBu
  • 如何告诉 LLDB 将信号传递给程序

    我在 lldb 中为安装在 MacOS 上的基于 C 语言的应用程序设置了很多断点 断点大多设置在应用程序的同一函数中 然而 第二天我回到应用程序继续处理它 并开始在同一个函数中再次设置断点 出现了一个问题 断点不是发生在应用程序函数内部