gpt4 book ai didi

ios - 在 Xcode 中使用信号量进行调试 - Grand Central Dispatch - iOS

转载 作者:行者123 更新时间:2023-11-29 03:48:38 26 4
gpt4 key购买 nike

假设我的项目中有一些具有以下模式的代码块:

 dispatch_semaphore_wait(mySemaphore);
// Arbitrary code here that I could get stuck on and not signal
dispatch_semaphore_signal(mySemaphore);

假设我在调试器中暂停,发现我陷入了困境:

 dispatch_semaphore_wait(mySemaphore);

如何轻松查看信号量最后被消耗的位置?如,我在哪里可以看到dispatch_semaphore_wait(mySemaphore);被调用并接通下一行代码?最简单的方法是使用 NSLog,但是有没有更奇特/更快的方法可以在 Xcode 4 的调试器中执行此操作?

最佳答案

您可以在调试器中打印信号量对象的debugDescription(例如通过po),这将为您提供以下信号量对象的当前值和原始值(即创建时的值)信号量。

只要当前值< 0,dispatch_semaphore_wait就会等待其他人dispatch_semaphore_signal来增加该值。

目前没有自动内置方法来跟踪随着时间的推移对 dispatch_semaphore_signal/dispatch_semaphore_wait 的调用,但这是一个有用的功能请求,可在 bugreport.apple.com 提交。

自行跟踪此问题的一种方法是在 Xcode 中的这些函数上创建符号断点,添加执行 bt 的“调试器命令”断点操作,并将标志设置为“评估后自动继续”断点。

另一种选择是使用 DTrace pid 探针通过调用 ustack() 的操作来跟踪这些函数。

关于ios - 在 Xcode 中使用信号量进行调试 - Grand Central Dispatch - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17356789/

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