Arp*_*ekh 13 iphone xcode cocoa-touch objective-c
我在我的iPad App上工作,
运行代码时,表视图中有一个方法.
据我们所知
`cellForRowAtIndexPath:`
Run Code Online (Sandbox Code Playgroud)
有几次可以调用此方法.
喜欢的
scrolling table view cells.
Or table view reload data.
Run Code Online (Sandbox Code Playgroud)
我有复杂的编码所以我只想看方法调用堆栈...
从哪个方法调用索引路径中的行的单元格.
我使用过NSLogs和断点但仍然无法获得.
Cal*_*leb 22
点击断点时,在导航器区域(窗口左侧)中选择Debug导航器:

Debug导航器显示应用程序中每个线程的堆栈跟踪.它显示了与gdb backtrace命令相同的信息,但省略了返回地址(通常不是很有帮助).使用导航器底部的控件隐藏或显示所有线程,并更改调整显示的堆栈帧数.我在上图中将滑块设置在其范围的中间位置,并且Debug导航器省略了堆栈帧2-18,这是从一个框架方法到另一个框架方法的所有调用,即不是我的东西.
应该设置Xcode 4以在调试时自动显示Debug导航器,但如果没有,您可以通过转到Xcode-> Behaviors-> Edit Behaviors ...来配置它.然后从中选择Run Pauses项目列表并将其设置为Show navigator Debug Navigator.
Nis*_*ant 22
您可以在NSLog中打印堆栈跟踪
NSLog(@"Stack trace : %@",[NSThread callStackSymbols]);
Run Code Online (Sandbox Code Playgroud)
编辑:Swift代码
println("Stack trace: %@", NSThread.callStackSymbols())
Run Code Online (Sandbox Code Playgroud)
elp*_*elp 11
您可以设置断点(或暂停应用程序)并从gdb调试器写入" backtrace".
你应该看到堆栈:
(gdb) backtrace
#0 0x9022f7fe in mach_msg_trap ()
#1 0x9022ecdc in mach_msg ()
#2 0x022a310a in __CFRunLoopServiceMachPort ()
#3 0x02206550 in __CFRunLoopRun ()
#4 0x02205d84 in CFRunLoopRunSpecific ()
#5 0x02205c9b in CFRunLoopRunInMode ()
#6 0x024617d8 in GSEventRunModal ()
#7 0x0246188a in GSEventRun ()
#8 0x00c0ca16 in UIApplicationMain ()
#9 0x0000270d in main (argc=1, argv=0xbfeff550) at /Users/.........m:14
Run Code Online (Sandbox Code Playgroud)
尝试在条目中设置断点
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
然后右键单击断点并从"Built-in Breakpoints"菜单项中选择"Log Stack Trace and Auto Continue".
这将在每次输入此函数时自动记录堆栈跟踪,并且无需步骤实际使用gdb控制台即可继续.
那是Xcode 3.x对于Xcode 4,程序有点不同.
Command- Option点击断点)只需添加 Swift 4 语法,以防万一有人需要
print("Stack trace: \(Thread.callStackSymbols)")
Run Code Online (Sandbox Code Playgroud)