首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Xcode 4.3.2不会在调试器中显示完整的调用者堆栈,只显示当前函数?

这个问题的解决方法如下:

首先,确保您的调试器配置正确。在Xcode中选择Product -> Scheme -> Edit Scheme,选择Run选项卡,在Info tab中把“Debug executable”选项勾选上。

其次,在调试器中开启堆栈日志记录。在Xcode中选择Product -> Scheme -> Edit Scheme,选择Run选项卡,在Info tab中把“Debug executable”选项勾选上。

然后,在代码中添加以下代码来获取完整的调用者堆栈:

代码语言:txt
复制
@autoreleasepool {
    NSLog(@"Call Stack: %@", [NSThread callStackSymbols]);
}

最后,如果以上方法都无法获取完整的调用者堆栈,可以考虑在代码中添加调试信息,来获取更详细的调用信息。

总的来说,在Xcode中调试时,无法直接获取完整的调用者堆栈,需要借助调试器配置和代码中的方法来获取。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何解决XcodeSIGABRT错误

在继续之前,让我们讨论SIGABRT一些误解和常见陷阱: SIGABRT错误通常与AppDelegate类声明无关,即使它在Xcode突出显示了该行。...该行被突出显示,因为它是您应用程序第一行代码。AppDelegate除非您绝对确定其中存在错误,否则不要浪费时间在课堂上。 stacktrace是导致应用崩溃函数调用列表。...检查堆栈跟踪 在许多情况下,Xcode不会向您显示SIGABRT崩溃任何有用错误消息。发生这种情况时,了解一些调试命令很有用,例如bt。 Xcode具有称为LLDB集成调试环境。...您可以键入bt以查看当前调用堆栈(也称为“ backtrace”或“ stacktrace”)。这是运行到当前崩溃所有功能列表。此跟踪通常包括导致错误功能。...惊人! 请记住,stacktrace是从外向内运行堆栈跟踪显示顶级函数调用底部,往上走堆越高,越深电话去在。最新,最新,最深层调用位于堆栈顶部。

6.1K20

iOS开发 Xcode各种调试、DEBUG

(这里有一个关于调试器如何工作总体解释。) 你以前有可能已经使用过调试器,即使只是在 Xcode 界面上加一些断点。但是通过一些小技巧,你就可以做一些非常酷事情。...参考: 与调试器共舞 - LLDB 华尔兹 LLDB调试命令初探 About LLDB and Xcode The LLDB Debugger 基础 help 在控制台输入help,显示控制台支持lldb...完整清单点击查看 po 打印对象,是 e -o --缩写 expression 流程控制 当你通过 Xcode 源码编辑器侧边槽 (或者通过下面的方法) 插入一个断点,程序到达断点时会就会停止运行...注意,当前行不是函数调用时,next 和 step 效果是一样。 大多数人知道 c,n 和 s,但是其实还有第四个按钮,step out。...它有一个可选参数,在执行时它会把可选参数加载进返回寄存器里,然后立刻执行返回命令,跳出当前栈帧。这意味这函数剩余部分不会被执行。这会给 ARC 引用计数造成一些问题,或者会使函数清理部分失效。

2.2K50
  • Xcode Debug 大全

    (这里有一个关于调试器如何工作总体解释。) 你以前有可能已经使用过调试器,即使只是在 Xcode 界面上加一些断点。但是通过一些小技巧,你就可以做一些非常酷事情。...参考: 与调试器共舞 - LLDB 华尔兹 LLDB调试命令初探 About LLDB and Xcode The LLDB Debugger 基础 help 在控制台输入help,显示控制台支持lldb...完整清单点击查看 po 打印对象,是 e -o --缩写 expression 流程控制 当你通过 Xcode 源码编辑器侧边槽 (或者通过下面的方法) 插入一个断点,程序到达断点时会就会停止运行...注意,当前行不是函数调用时,next 和 step 效果是一样。 大多数人知道 c,n 和 s,但是其实还有第四个按钮,step out。...它有一个可选参数,在执行时它会把可选参数加载进返回寄存器里,然后立刻执行返回命令,跳出当前栈帧。这意味这函数剩余部分不会被执行。这会给 ARC 引用计数造成一些问题,或者会使函数清理部分失效。

    1.2K21

    汇编和栈

    在上图中,堆栈指针顺序如下: 栈指针当前指向第 3 帧。 指令指针寄存器指向代码调用一个新函数。...由于基本指针已保存到堆栈并设置为当前堆栈指针,因此只需知道基本指针寄存器值即可遍历堆栈调试器在向您显示堆栈跟踪时会执行此操作。...当一个函数序言完成设置时,RBP 内容将指向堆栈帧下面的前一个 RBP 注意:当您通过单击 Xcode 帧或使用 LLDB 跳到另一个堆栈帧时,RBP 和 RSP 寄存器都将更改值以对应于新帧!...回到 Xcode ,在 ViewController.swift awakeFromNib 函数 StackWalkthrough (5) 行中使用 Xcode GUI 创建一个断点。...这意味着堆栈指针已递减,并且 RSP 指向一个值,该值将指向 0x5 值。 确认下: (lldb) p/x $rsp 这显示了指向 RSP 的当前值。 这意味着什么?

    3.5K20

    驱动开发:WinDBG 常用调试命令总结

    Windbg是Microsoft公司免费调试器调试集合GUI调试器,支持Source和Assembly两种模式调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。...dml_proc // 显示当前进程信息 .tlist -v // 列出所有运行进程 ~ // 列出线程 ~. // 查看当前线程 ~* //...bm message_* // 匹配message_开头函数,并在这些函数起始处都打上断点 堆栈操作 k // 显示当前调用堆栈 kn // 带栈编号显示当前调用堆栈 kb // 打印出前3个函数参数的当前调用堆栈...kb 5 // 只显示最上5层调用堆栈 kv // 在kb基础上增加了函数调用约定、FPO等信息 kp // 显示每一层函数调用完整参数,包括参数类型、名字、取值 kd // 打印堆栈地址...* # 列出ntdll全部结构体,导出函数名也会列出 dt ntdll!

    84620

    现代CPU性能分析与优化-性能分析方法-采样

    现代性能分析器每秒可以收集数千个样本,这为基准测试热点提供了相当准确估计。 与调试器例子一样,每次捕获新样本时,被分析程序执行都会中断。...收集到样本存储在一个转储文件,该文件可以进一步用于显示程序耗时最多部分、调用图等。...收集调用堆栈 在采样时,我们经常会遇到程序中最热门函数被多个函数调用情况。图 @fig:CallStacks 显示了一个这样场景示例。...性能分析工具输出可能显示 foo 是程序中最热门函数之一,但如果它有多个调用者,我们想知道哪个调用者调用 foo 次数最多。...知道一种有效收集调用堆栈方法非常重要。不熟悉该概念开发人员会尝试使用调试器来获取此信息。他们通过中断程序执行并分析调用堆栈(例如,gdb 调试器 backtrace 命令)来做到这一点。

    16010

    iOS代码调试之LLDB命令

    前言 在iOS系统APP程序开发,经常需要代码调试跟踪,最常用就是LLDB Debugger程序调试器,LLDB Debugger (LLDB) 是一个开源、底层调试器(low level debugger...expression命令是动态修改变量值,Xcode还支持动态调用函数。在控制台执行call命令,可以在不修改代码,不重新编译情况下,在断点调用某个方法,并输出此方法返回值。...4.线程和帧状态检测 在进程停止后,LLDB会选择一个当前线程和线程当前帧(frame)。很多检测状态命令可以用于这个线程或帧。...2)thread backtrace堆栈打印,简写bt bt命令可以打印出线程堆栈信息,bt命令是打印当前线程堆栈信息,如下图所示。...4)frame variable查看帧变量 frame variable命令显示当前变量,默认输出当前帧所有参数和所有局部变量,如下图所示: ?

    1.8K20

    配合LLDB调试器进行iOS代码调试 原

    配合LLDB调试器进行iOS代码调试         在一款完整iOS移动应用开发,代码调试和编写占着同等重要地位。...2.frame代码堆栈块信息相关指令       当Xcode进入断点调试或者遇到异常程序崩溃时,在Xcode左侧导航区都会将程序运行相关堆栈块信息列举出来,例如使用如下测试代码,在text方法...从图中可以看出,程序当前处于激活状态线程有5个,程序目前断在线程1test方法堆栈,使用frame info指令可以打印当前堆栈信息,示例如下: (lldb) frame info frame...首先Xcode左侧导航区为我们列出线程堆栈块并不是当前线程所有堆栈块,使用如下命令可以打印出当前线程所有堆栈块: (lldb) thread backtrace * thread #1: tid...detach指令结束当前调试线程。         di指令反汇编当前函数与disassemble相同。         exit指令退出lldb调试器

    1.9K30

    XCode基本使用及调试技巧

    设置符号断点可以输入类名+函数名,也可输入函数名,Xcode会自动匹配在不同类同名方法进行断点。 ? 一旦onOK方法被调用就会命中断点。...如例子,当m_nsContent变量发声变化时调试器会自动断下来,同时输出变化信息。 ?...1、 call命令 除了动态修改变量值,Xcode还支持动态调用函数,可以在不增加代码,不重新编译情况下动态调用一个方法。 ? 动态将m_text从父view移除。...1、 image命令 image命令可以列出当前App所有模块,可以查找一个地址对应代码位置。 在调试越狱插件时,可以方面的用image list命令查看越狱插件是否注入自己App。...3、Xcode5新特性快速预览: Xcode5支持在调试时对变量进行快速预览,调试时将鼠标放在变量上,然后点击快速预览按钮即可看到控件显示。 ?

    6.4K71

    iOS崩溃堆栈符号化,定位问题分分钟搞定!

    .dSYM文件其实是一个目录,在子目录包含了一个16进制保存函数地址映射信息中转文件,所有Debugsymbols都在这个文件(包括文件名、函数名、行号等),所以也称之为调试符号信息文件。...在Xcode开发调试App时,一旦遇到崩溃问题,开发者可以直接使用Xcode调试器定位分析。...使用XcodeArchive导出 如果开发者使用XcodeArchive导出功能打包,可以切换到OrganizerProjects视图,查看对应项目的Derived Data路径,在其中可以找到当前导出过程产生...目前,许多崩溃监控服务都显示backtrace符号化堆栈,增加了可读性,但分析定位问题时,仍然要进一步符号化处理。...说明: loadAddress 表示函数动态加载地址,对应崩溃地址堆栈 + 号前面的地址,即0x000ef000 address 表示运行时地址、对应崩溃地址堆栈第一个地址,即0x0010143b

    4.8K51

    XCodedebug断点调试

    注意,当前行不是函数调用时,next 和 step 效果是一样。 大多数人知道 c,n 和 s,但是其实还有第四个按钮,step out。...它会继续执行到下一个返回语句 (直到一个堆栈帧结束) 然后再次停止。 断点 我们都把断点作为一个停止程序运行,检查当前状态,追踪 bug 方式。...想象把断点放在函数开头,然后用 thread return 命令重写函数行为,然后继续。想象一下让这个过程自动化,听起来不错,不是吗? 管理断点 Xcode 提供了一系列工具来创建和管理断点。...我们会一个个看过来并介绍 LLDB 中等价命令 (是的,你可以在调试器内部添加断点)。 在 Xcode 左侧面板,有一组按钮。其中一个看起来像断点。...这样每次调用这个函数时候,程序都会停止,不管是你调用还是苹果调用。 如果你 Xcode UI 上右击任意断点,然后选择 "Edit Breakpoint" 的话,会有一些非常诱人选择。

    5.5K71

    XCodedebug断点调试

    注意,当前行不是函数调用时,next 和 step 效果是一样。 大多数人知道 c,n 和 s,但是其实还有第四个按钮,step out。...它会继续执行到下一个返回语句 (直到一个堆栈帧结束) 然后再次停止。 断点 我们都把断点作为一个停止程序运行,检查当前状态,追踪 bug 方式。...想象把断点放在函数开头,然后用 thread return 命令重写函数行为,然后继续。想象一下让这个过程自动化,听起来不错,不是吗? 管理断点 Xcode 提供了一系列工具来创建和管理断点。...我们会一个个看过来并介绍 LLDB 中等价命令 (是的,你可以在调试器内部添加断点)。 在 Xcode 左侧面板,有一组按钮。其中一个看起来像断点。...这样每次调用这个函数时候,程序都会停止,不管是你调用还是苹果调用。 如果你 Xcode UI 上右击任意断点,然后选择 "Edit Breakpoint" 的话,会有一些非常诱人选择。

    1.7K70

    扒虫篇-Debug几个实用方法

    在某个方法执行断点 设置步骤如下: ? 如果你Symbol只写了一个函数名,那么就会在出现该函数地方就中断执行。如下,就会在运行到doAnimation时候中断。是不是很强大呢? ?...三.LLDB命令 LLDBXcode默认调试器, 我们通过执行LLDB命令使调试过程更加灵活。并且可以通过指令立刻看到一些我们需要修改完代码再次运行才能看到效果或者结果,超级实用。...(这个相当于,动态往程序中加入新代码,不用修改代码再次运行即可看到一些你想看到效果,超级强大。) 5, bt     打印当前线程调用堆栈,加all可打印所有thread堆栈。...僵尸对象作用是在你向它发送消息时,它会显示一段日志并自动跳入调试器。 所以当启用NSZombieEnabled时,一个错误内存访问就会变成一条无法识别的消息发送给僵尸对象。...僵尸对象会显示接受到得信息,然后跳入调试器,这样你就可以查看到底是哪里出了问题。 所以这时一般崩溃原因是:调用了已经释放内存空间,或者说重复释放了某个地址空间。

    1.5K10

    代码开发工具Xcode

    同时,该软件还提供了各种调试工具,包括断点、单步调试和调试控制台,可以帮助开发者快速定位和解决程序问题。 除了代码编辑和调试功能外,Xcode for Mac 还具有强大构建和测试功能。...Builder为每个目标设备显示像素完美的UI,并可以在任何缩放级别进行编辑 •查看调试会在运行时显示所有应用程序UI视图图层3D堆栈 •助理编辑者显示与您主要任务相关内容 •实时问题在您键入时会显示错误...,其中包括: - 与功能指针统一关闭 - 元组和多个返回值 - Structs作为支持方法,扩展,协议值类型 - 强大协议,可以在您代码库扩展功能 - 功能编程模式,包括地图和过滤器 Interface...Builder可以轻松设计您界面而无需代码 •故事板让您可以在应用程序安排屏幕完整流程 •在设计画布查看呈现自定义控件 •为不同设备,屏幕尺寸和方向自定义您界面 •StackViews可以很容易地理解界面每个部分布局...•从GUI设计直接创建与相关源代码连接 专业编辑器和调试器保持您代码前端和中心 •点击几键,Open Quickly将立即打开项目中任何文件 •消息气泡会在您代码旁边显示错误,警告和其他问题

    1.8K10

    iOS_Memory Leak 内存泄露治理

    ,新分配内存信息. ---- 2、Memory Report Xcode 运行项目时,切换到 Debug navigator 点击 memory 就可以查看 Memory Report,显示 内存使用...;选中其中一个,右侧显示是泄露点调用堆栈,可据此找到泄露点进行修改。...:线程分离,在调用路径能够清晰看到占用内存最大线程 Invert Call Tree:反转调用堆栈顺序 Hide System Libraries:隐藏系统库调用堆栈信息 Flatten Recursion...: ---- 5、Memory Graph 可显示当前所有 已使用内存 详情 5.1、前置设置 Malloc Scribble:开启将使用预定义值填充释放内存,从而在内存泄漏时更加明显。...Graph,在底部Filter栏输入 关键字 过滤出当前还存活对象,进行分析: 例如:退出直播间应该释放插件没有释放: 以上介绍都是 Xcode 自带可视化工具,下面介绍是其他代码检测工具

    74720

    恶意样本对抗栈回溯检测机制套路浅析

    命中断点之后,发现无法通过 kv 指令栈回溯来获取该线程当前时刻调用栈序列,能获取到栈帧只有当前所处函数调用。而继续跟进该函数里所调用任何一个函数,发现调用栈仍旧只有一个栈帧。...根据规定,函数调用 CALL 指令可拆分为两步操作: 将调用者下一条指令(EIP)地址压栈 跳转至将要调用函数地址(相对偏移或绝对地址) 那么在执行到子函数首地址位置时,返回地址(即调用函数调用位置下一条指令地址...那么根据这个逻辑,可以通过上面回溯各级 EBP 值,并根据 EBP+sizeof(ULONG_PTR) 获取到函数调用者函数地址(当前函数返回地址)。...和 ESP 值均不在该线程堆栈范围之中,也就是说:要么是 TEB 堆栈范围被修改了,要么是当前栈帧所处堆栈被移动到自己分配内存里了,也就是说,栈被“截断”并“移动”了。...要是样本 ShellCode 更进一步,窃取其他线程堆栈部分数据覆盖到自己构造堆栈高内存部分,那么在调试器或检测系统在栈回溯时,遍历到上层调用项,被诱导进入另一个线程调用栈序列,那么获取到数据就可能已经不是当前线程数据了

    82620

    iOS符号化浅析

    其实上述几种方式大致可以分为两种 Crash Log:完整崩溃日志文件; 异常信息:只上报关键错误信息,包含堆栈等; 上面不管是哪种方式,对我们最重要信息还是错误堆栈。...符号化流程 符号化流程 获取到崩溃日志 App 关键行信息 不管是完整崩溃文件还是堆栈信息,我们最终需要其实是关键崩溃行信息,长下面这样: // 没有显示堆栈信息 3 iOSTest 0x000000010029e694...iOSTest + 26260 // 显示偏移量堆栈信息 3 iOSTest 0x000000010029e694 0x0000000100298000 + 26260 当然对于完整 Crash...获取到偏移量、运行时堆栈地址、运行时 APP 起始地址 我们拿显示偏移量堆栈信息举例, 3:信息位于堆栈索引 iOSTest:包名 0x000000010029e694:运行时堆栈地址(stack address...symbolicatecrash_xcode atos atos 命令将十六进制地址转换为源代码可识别的函数名称和行号。优点:速度快,可以符号化特定某一行,方便上层做缓存。

    1.9K41

    Visual Studio 调试系列2 基本调试方法

    按 F10 将使调试器前进,但不会单步执行应用代码函数或方法(代码仍将执行)。 上图中当前程序走到32行,按下 F10 后,直接走到34行,而没有进入到调用方法。...06 使调试器当前函数跳出(Shift + F11) 有时你可能希望继续调试会话,但在整个当前函数中一直使调试器前进。 按 Shift+F11(或“调试”>“单步跳出”)。...在“自动”窗口中,可看到变量及其当前值和类型。 “自动”窗口显示当前行或前一行使用所有变量(在 C++ ,该窗口显示前三个代码行变量。 查看文档以了解特定于语言行为)。...“调用堆栈”窗口显示方法和函数被调用顺序。 最上面一行显示当前函数(此示例 Draw 方法)。 第二行显示 Draw 是从Main 函数调用,依此类推。...调用堆栈是检查和理解应用执行流好方法。 可双击代码行来查看该源代码,这也会更改调试器正在检查的当前范围。 此操作不会使调试器前进。 还可使用“调用堆栈”窗口中右键单击菜单执行其他操作。

    4.5K10
    领券