草庐IT

ios - XCode4 调试器总是在 Main 中中断

升级到XCode4(v.4.2、4D199)后,似乎每次我的应用程序在调试时崩溃,调试指向main(),并且堆栈未符号化且无用。多年来一直运行良好,我不知道哪里出了问题。我正在使用GDB。我还根据thisadvice尝试了LLDB,它也没有用(类似的,无用的堆栈)。我的断点有效,我得到了完整的堆栈,并且可以在我的代码遇到这些变量时检查变量。重现步骤:注意。这发生在我自己的项目中,但我将在此处使用Apple的代码从等式中删除该变量从Apple下载以下样本:https://developer.apple.com/library/ios/#samplecode/UICatalog/Intro

objective-c - NSLog 在 LLDB 中没有输出。在 GDB 中工作

自最近更新以来,Xcode4.3现在似乎默认使用LLDB调试器。我刚刚发现我的NSLog语句没有显示在控制台中。在搜索答案后,没有找到答案,我切换回GDB,它工作正常。我发现其他人在LLDB中提到了NSLog,所以我不明白为什么它在我的案例中失败了。它不应该一样工作吗?LLDB是否有不同的方法? 最佳答案 从LLDB切换回GDB对我也有效。对于那些不熟悉xcode的人,将运行时调试器改回GDB:Cmd⌘+Option⌥+R调出面板将调试器更改为“GDB”在错误修复之前必须这样做。 关于o

objective-c - NSLog 在 LLDB 中没有输出。在 GDB 中工作

自最近更新以来,Xcode4.3现在似乎默认使用LLDB调试器。我刚刚发现我的NSLog语句没有显示在控制台中。在搜索答案后,没有找到答案,我切换回GDB,它工作正常。我发现其他人在LLDB中提到了NSLog,所以我不明白为什么它在我的案例中失败了。它不应该一样工作吗?LLDB是否有不同的方法? 最佳答案 从LLDB切换回GDB对我也有效。对于那些不熟悉xcode的人,将运行时调试器改回GDB:Cmd⌘+Option⌥+R调出面板将调试器更改为“GDB”在错误修复之前必须这样做。 关于o

gdb打断点教学

使用-g标志来启用调试信息gcc-gtest.c-otestgdbtest要在gdb中设置断点,可以使用break命令。例如,在程序的main函数中设置断点,可以执行以下命令:(gdb)breakmain这将在程序的main函数的第一行处设置断点。你也可以在文件名和行号处设置断点,如下所示:(gdb)breaktest.c:10这将在filename.c文件的第10行处设置断点。要查看当前设置的所有断点,请使用infobreakpoints命令:(gdb)infobreakpoints这将列出所有当前设置的断点。如果要删除特定断点,可以使用delete命令,并指定要删除的断点的编号。例如,要删

GDB详解

GDB调试启动gdb调试的方法一般有三种方式:gdbfilenamegdbattachpidgdbfilenamecorename方法一直接调试目标程序gdbfilenamefilename就是需要启动调试的程序文件名,直接gdb启动一个程序进行调试,也就是说这个程序还没有启动。方法二附加进程gdbattachpid一个程序启动了,我们想要调试这个程序。pid就是这个进程的ID当gdbattac上目标进程之后,调试器会暂停下来,可以用continue继续运行。调试完成之后可以使用detach让程序与gdb分离,这样程序就可以正常运行了。然后就可以quit了方法三进程crash之后定位问题--调

GDB 调试器如何通过调用帧信息来确定函数调用关系

从调试器中获取函数调用关系。在我的 上一篇文章 中,我展示了如何使用 debuginfo 在当前指令指针(IP)和包含它的函数或行之间进行映射。该信息对于显示CPU当前正在执行的代码很有帮助。不过,如果能显示更多的有关当前函数调用栈及其正在执行语句的上下文对我们定位问题来说也是十分有助的。例如,将空指针作为参数传递到函数中而导致非法内存访问的问题,只需查看当前执行函数行,即可发现该错误是由尝试通过空指针进行访问而触发的。但是,你真正想知道的是导致空指针访问的函数调用的完整上下文,以便确定该空指针最初是如何传递到该函数中的。此上下文信息由回溯提供,可以让你确定哪些函数可能对空指针参数负责。有一点

GDB 调试器如何通过调用帧信息来确定函数调用关系

在我的 上一篇文章 中,我展示了如何使用 debuginfo 在当前指令指针(IP)和包含它的函数或行之间进行映射。该信息对于显示CPU当前正在执行的代码很有帮助。不过,如果能显示更多的有关当前函数调用栈及其正在执行语句的上下文对我们定位问题来说也是十分有助的。例如,将空指针作为参数传递到函数中而导致非法内存访问的问题,只需查看当前执行函数行,即可发现该错误是由尝试通过空指针进行访问而触发的。但是,你真正想知道的是导致空指针访问的函数调用的完整上下文,以便确定该空指针最初是如何传递到该函数中的。此上下文信息由回溯提供,可以让你确定哪些函数可能对空指针参数负责。有一点是肯定的:确定当前活动的函数

ios - 在 Xcode 4 GM 中,如何打开 LLDB?我只看到 GDB

在方案运行调试器弹出窗口中,它只显示“无”和“GDB”。这是针对使用LLVM构建的iPad4.2模拟器。 最佳答案 你不能。用苹果员工的话说,LLDBisnotavailableforiOSdevelopmentyet.截至2011年7月,尚不清楚LLDB何时可用于iOS。在Xcode4.0.2中,您唯一的选择是GDB。在Xcode4.2中,你可以选择LLDB,但你不能使用它:LLDBproject没有列出iOS支持的日期。FAQ说:Q:WhattargetsdoesLLDBcurrentlysupport?MacOSXnative

ios - 在 Xcode 4 GM 中,如何打开 LLDB?我只看到 GDB

在方案运行调试器弹出窗口中,它只显示“无”和“GDB”。这是针对使用LLVM构建的iPad4.2模拟器。 最佳答案 你不能。用苹果员工的话说,LLDBisnotavailableforiOSdevelopmentyet.截至2011年7月,尚不清楚LLDB何时可用于iOS。在Xcode4.0.2中,您唯一的选择是GDB。在Xcode4.2中,你可以选择LLDB,但你不能使用它:LLDBproject没有列出iOS支持的日期。FAQ说:Q:WhattargetsdoesLLDBcurrentlysupport?MacOSXnative

ios - LLDB 等同于 GDB 的 "info malloc-history <address>"命令?

我正在尝试解决iOS中的“消息已发送到已解除分配的实例”错误。 最佳答案 请参阅LLDB-GDB命令映射(http://lldb.llvm.org/lldb-gdb.html)-您必须导入一个脚本,并且该命令现在名为malloc_info。显然,mallocstacklogging还是需要在scheme选项中开启。(lldb)scriptimportlldb.macosx.heap(lldb)malloc_info--stack-history0x10010d680不幸的是,它没有显示dealloc的-GDB的malloc-hist