天道酬勤,学无止境

How do I switch from lldb to gdb debugger types?

I have been looking around for quite a while trying to figure out how to switch from lldb to gdb and could not find anything on how to switch between the 2 in Xcode 6.1. I am trying to debug my app and I might be able to figure it out if I use gdb instead of lldb but I don't know if it will help me.

Any suggestions on which type of debugging is better and how to switch between the 2. Any input would be greatly appreciated.

Thanks in advance.

评论

The debugger for Xcode 6 is lldb, there is no switching to gdb.

There is no reason to need gdb. What is your problem with lldb, most of the commands are the same.

See: LLDB to GDB Command Map and The LLDB Debugger.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 为什么LLDB调试器始终无法连接?(Why does the LLDB Debugger constantly fail to attach?)
    问题 对于这个问题,我已经看到了很多答案: 错误:无法附加到进程ID switch to GDB 。 但是,没有一个地址为什么会发生的原因是什么? 使用GDB调试器可以很好地进行附加,但是默认和建议的项目设置是LLDB。 有人可以解释为什么LLDB失败吗? 是常见错误还是我做错了什么? 或者,如何在创建新项目时将GDB设置为默认调试器而不手动更改它? 系统信息: OS: Lion RAM: 5GB XCode: Version 4.6 (4H127) Device: Mac mini 我的本地主机设置: 回答1 确保在/etc/hosts文件中将localhost映射到127.0.0.1 : $ grep localhost /etc/hosts 如果grep没有显示127.0.0.1则添加它: $ sudo -i # echo "127.0.0.1 localhost" >> /etc/hosts ^'#'是root的命令提示符; 请勿输入,否则您将注释掉该语句,将不会发生任何事情 注意使用>>而不是> ! (最好是使用vi或mate或其他任何东西对其进行编辑)。 我的/etc/hosts文件显示(忽略注释): 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost
  • 如何使用GDB或LLDB等调试器在Rust中调试板条箱?(How to use a debugger like GDB or LLDB to debug a crate in Rust?)
    问题 我正在写一个新的板条箱。 我为此编写了一些测试,然后使用cargo test 。 之后,在target文件夹中会生成一些test_xxx可执行文件。 我已经在Cargo.toml启用了debug选项。 通过运行gdb targets/test_xxx ,我可以列出并调试test_xxx可执行文件中的代码。 但是,我无法进入板条箱中的功能。 没有调试信息。 如何建立/链接板条箱以包含其调试信息? 回答1 您的问题有点模糊,因此我将描述我所做的事情: 创建一个新的箱子: cargo new --lib so cd so/ 添加一小段代码: src / lib.rs fn thing1(a: i32) -> i32 { a + 2 } fn thing2(a: i32) -> i32 { a * a } pub fn do_a_thing(a: i32, b: i32) -> i32 { thing2(b) - thing1(a) } 创建了一个外部测试; 一个生活在tests 。 这与您对test_XXX的评论test_XXX ,据我test_XXX ,这可能是最好的: 测试/字母 #[test] fn it_works() { assert_eq!(1, so::do_a_thing(1, 2)) } 运行测试(调整后的输出): % cargo test Running
  • Why does the LLDB Debugger constantly fail to attach?
    I have seen a lot of answers for this question: error: failed to attach to process ID as switch to GDB. But no one addresses the reason of why it happens? Attaching works fine with the GDB debugger but the default and recommended project setting is LLDB. Can anybody explain why LLDB fails? Is it a common bug or am I doing something wrong? Alternatively, how can I set GDB as my default debugger without changing it manually when creating the new projects? System Info: OS: Lion RAM: 5GB XCode: Version 4.6 (4H127) Device: Mac mini My localhost setting:
  • 检查为什么Ruby脚本挂起(Check why ruby script hangs)
    问题 有时我的规格可能会挂起,并且我必须取消相应的红宝石过程。 当我运行使用capybara和webkit驱动程序编写的集成规范时,这很常见。 是否可以检查给定红宝石的工艺,并查看其悬挂位置? 哪种方法,操作,文件,行号等 回答1 tl; dr 使用gdb (例如Linux): echo 'call (void)rb_backtrace()' | gdb -p $(pgrep -f ruby) 或使用lldb (例如OS X): echo 'call (void)rb_backtrace()' | lldb -p $(pgrep -f ruby) 您可以使用调试库来调试Ruby脚本。 如果脚本是从外壳执行的,则可以通过将脚本的第一行(shebang)更改为: #!/usr/bin/env ruby -rdebug 或将其运行为: ruby -rdebug my_script.rb 加载调试器后,您可以设置一些断点,也可以通过键入c继续运行应用程序。 然后,调试器会根据任何异常(例如Ctrl + C )或断点(例如,组成debugger的行)自动中断。 然后,每当显示调试器控制台时,您都可以在以下选项之间进行选择: c表示“继续”(到下一个异常,断点或以下行: debugger ), n代表下一行, w / where显示框架/调用堆栈, l显示当前代码, cat来显示重点。
  • 将 lldb 输出重定向到文件(Redirect lldb output to file)
    问题 我在 Xcode 中使用 lldb,其中一个变量包含大量 JSON 数据。 使用po myVar对分析这些数据没有多大帮助,因为它会在很小的 Xcode 调试控制台中输出。 有没有办法将 lldb 输出重定向到文件? 我在这里看到这样的功能似乎在 gdb 上可用: (gdb) set logging on (gdb) set logging file /tmp/mem.txt (gdb) x/512bx 0xbffff3c0 (gdb) set logging off 并在 lldb 中“翻译”为: (lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0 (lldb) me r -o/tmp/mem.txt -c512 0xbffff3c0 (lldb) x/512bx -o/tmp/mem.txt 0xbffff3c0 但是, memory read命令在我的情况下--outfile ,显然, --outfile不可用于print命令。 回答1 您可以使用 Python 脚本来执行此操作(以及更多),如下所述: Xcode 中的 LLDB Python 脚本 在您选择的目录中创建一个名为 po.py 的文件(例如“~/.lldb”): import lldb def print_to_file
  • Flutter Engine C++ 源码调试初探
    原文:https://fucknmb.com/2019/12/06/Flutter-Engine-C-%E6%BA%90%E7%A0%81%E8%B0%83%E8%AF%95%E5%88%9D%E6%8E%A2/ 备份防丢,推荐上述链接阅读 在Flutter Engine的自定义过程中,难免会对其进行调试,所谓工欲善其事必先利其器。调试的手段有多种,一般以日志输出和断点调试为主。本篇文章主要介绍一下Android环境下使用LLDB对Flutter Engine C++部分源码进行调试,至于为什么不使用GDB,因为我没有用GDB成功过,环境搭建的过程中遇到的坑很多,需要耐心看完全文。此处为人肉防盗文, 原文出处 https://fucknmb.com 前言 纵观全网,截止发稿,你大致可以在google搜索到这么几篇关于Flutter Engine调试的文章。 调试Flutter Native Engine初探Visual Studio Code调试和查看Flutter Engine源代码Flutter Engine源码调试 当然也不乏官方的调试文档 Debugging the engine Flutter官方的文档很简陋,简陋到只用了一句话描述Android部分的GDB调试 Debugging Android builds with gdb See https://github
  • 如何使用Xcode调试器打印属性的内容?(How to print out a property's contents using Xcode debugger?)
    问题 我正在编写一个iOS应用,并且需要使用内置Xcode调试器的帮助。 假设我有一个名为HomeViewController的对象,该对象具有三个属性 @property (nonatomic) BOOL finished; @property (nonatomic, strong) NSArray *myArray; @property (nonatomic, strong) NSString *myName; @synthesize finished = _finished, myArray = _myArray, myName = _myName; 假设我在这堂课有一个断点。 我将如何查看这些属性的内容? 我已经尝试过诸如po myName , print myName和print [self myName]事情,但是我不知道该怎么做。 我曾尝试使用LLDB,但仍然遇到此人遇到的相同错误(lldb无法打印带有“错误:对'id'的引用不明确”的变量值)。 这个问题的公认答案是,LLDB损坏了,我应该只使用GDB。 但是,我拒绝接受如此根本性的问题。 不过,我也尝试过将GDB与上面类似的命令一起使用。 但是,我也无法使GDB正常工作。 请帮助 回答1 放置断点后,运行,程序在断点处停止,将光标悬停在要查看的变量/值上,如下所示: 您还可以放置一个NSLog(@"%@"
  • iOS应用程式每隔一次启动便当机,找不到错误(iOS app crashing every other launch, can't find error)
    问题 第一次启动该应用程序时,一切似乎运行良好。 我将按一下“停止”按钮,做一些工作,当我再次启动它时,它似乎崩溃了,甚至无法加载任何东西。 按停止,再次单击运行,它可以正常工作。 直到我重复该过程。 这是xcode使用“线程1:信号SIGABRT”突出显示错误的地方。 显然,这里没有任何用处。 int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class])); } } 调试控制台除了(lldb)之外什么都没有显示(因此,我想它停止了,目前还没有崩溃)。因此,当我执行BT这就是我得到的: (lldb) bt * thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
  • 调试R中加载的Rcpp编译代码的有效方法是什么(在OS X Mavericks上)?(What are productive ways to debug Rcpp compiled code loaded in R (on OS X Mavericks)?)
    问题 调试加载到R中的共享对象(尤其是在OS X Mavericks上)的最有效,最快捷的方法是什么? 我主要对调试已编译的Rcpp代码感兴趣。 我已经阅读了有关调试编译代码(http://cran.r-project.org/doc/manuals/R-exts.html#Debugging-compiled-code)的R外部代码,该代码倾向于使用gdb,但gdb并未正式使用在Mavericks上受支持。 但是,看来lldb是可行的选择吗? 我从Dirk对本文的回复(感谢Dirk!)(在Windows下调试(逐行)Rcpp生成的DLL)中找到了最有用的资源,用于研究如何在R中调试编译的代码。 通过遵循下面明确概述的步骤,我可以成功地调试已编译的Rcpp代码,其他Rcpp新手可能会发现这很有用(对长度表示歉意,但是我想清楚比省略和模糊更好)。 但是,此开发过程有点繁琐且耗时。 问题: 与下面的操作相比,有没有一种更快和/或更容易的方法来调试已编译的Rcpp代码? 我是Rstudio的忠实拥护者,并且希望将通过该IDE创建的调试共享对象并入其中,因此,如果有人知道如何执行此操作,我会很想知道吗? Rstudio似乎使用属性,并且似乎下面的第4步需要修改,因为编译后临时目录中似乎没有.cpp文件(在下面的示例中,没有“ file5156292c0b48.cpp”文件) 步骤: 1)
  • 无法附加到进程ID Xcode(Failed to Attach to Process ID Xcode)
    问题 有人遇到过这个问题吗? 昨天我仍然可以在模拟器中运行我的应用程序,但是现在我无法运行我的应用程序,因为Xcode在控制台中显示了此错误: error: failed to attach to process ID <ID number> 我试图重新安装,执行此操作并创建新项目,但是没有任何运气。 任何人都可以解决此问题? 我使用Xcode 4.5 Preview 2并尝试运行iOS模拟器6 回答1 在模拟器中重置内容和设置对我有用。 在“ iOS Simulator”菜单中可用。 回答2 转到“产品”菜单,然后在此处找到“编辑方案”菜单。 在“编辑方案”窗口中,选择屏幕左侧的“运行”选项,然后在右侧,将调试器从LLDB更改为GDB。 回答3 我遇到了同样的问题,不久后我发现这是由于我的XCode项目包含对名为Resources的文件夹的Folder Reference所致。 似乎XCode不喜欢该名称。 只需删除文件夹引用或重命名文件夹即可解决此问题。 回答4 两种方法 方法1 :在文件夹Application Support-> iPhone Simulator->在iOS的每个模拟器版本中-> Applications->删除此处存在的所有文件。 现在转到产品->清洁 现在,在任何模拟器上运行它,它将起作用。 方法2 : 回答5 步骤1:ping $ ping
  • GDB Vs LLDB debuggers
    What is the difference between GDB & LLDB debuggers? I recently upgraded my Xcode version from 4.2 to 4.3 & started getting warning to upgrade my debugger from GDB to LLDB.
  • 是否可以使用lldb调试gcc编译的程序,或使用gdb调试clang编译的程序?(Is it possible to debug a gcc-compiled program using lldb, or debug a clang-compiled program using gdb?)
    问题 (前言:我对C / C ++还是很陌生,我真的不知道本机代码中的调试实际上是如何工作的。) 一些消息来源说,gdb和lldb可以调试编译为机器代码的任何程序。 其他人则说,要使用gdb进行调试,必须在带有-g标志的gcc中进行编译。 gcc的文档本身建议这是可选的,实际上,如果您使用它,可能会给除gdb之外的调试器带来问题。 Clang也有-g标志,文档基本上只说“ Generate debug information”。 那么这些调试器是否仅限于自己的工具链(GNU和LLVM),或者它们是否以某种方式独立于所使用的编译器? 回答1 从理论上讲,您应该能够使用lldb调试GCC构建的程序,并使用gdb调试LLVM构建的程序。 在这两种情况下,都应使用-g编译。 这是因为两个编译器均以相同格式生成目标文件(例如,在Linux上,都将生成具有DWARF调试信息的ELF文件),并且两个调试器都知道如何解析该格式。 实际上,两个编译器都将一些数据推送到调试信息中,只有它们各自的调试器才知道如何使用。 然而: LLVM生成的数据不应以任何方式阻碍gdb。 GCC生成的数据不应阻碍lldb,但如果这样做,您可以明确要求gcc不要添加非标准数据。 例如,在Linux上,在-g上使用-gdwarf-2只能生成符合标准的DWARF。 请注意,您还可以在没有调试信息的情况下调试程序(未使用
  • 在 Xcode 中查看 NSData 内容(Viewing NSData contents in Xcode)
    问题 我正在运行 Xcode,我想转储一个 NSData*。 有问题的变量是缓冲区。 有没有办法通过 UI 或 GDB 调试器来做到这一点? 编辑 我已将笔记移至答案中。 回答1 从来没有人正确回答过这个问题。 2 年后,我认为是时候了 :) 假设你的代码中有 NSData* myData; 然后在 lldb 中输入 me read `[myData bytes]` -c`[myData length]` 如果转储的格式不符合您的喜好,您可以添加“-t”,例如 me read `[myData bytes]` -c`[myData length]` -t int 更多帮助类型 help me read 在 lldb 中 回答2 从 Xcode 5 (lldb),您可以使用以下内容: po (NSString *)[[NSString alloc] initWithData:buffer encoding:4] 请注意,这假设您的 NSData 实例使用NSUTF8StringEncoding编码,但您可以在标题或文档中查找其他值。 因此,如果您正在调试包含在NSURLSessionDataTask的 JSON 请求之类的NSURLSessionDataTask ,则请求数据位于task.originalRequest.httpBody ,您可以在调试器中查看它 po
  • NSLog no output in LLDB. Works in GDB
    Since recent update Xcode 4.3 now seems to default to LLDB debugger. I just found that my NSLog statements are not showing in the console. After searching the for answers, finding none, I switched back to GDB and it works fine. I find others mention NSLog in LLDB so I don't' understand why it fails in my case. Should it not work the same? Is there a different method for LLDB?
  • How to use a debugger like GDB or LLDB to debug a crate in Rust?
    I am writing a new crate. I wrote some tests for it and run the tests using cargo test. After that, some test_xxx executables are generated in the target folder. I have enabled the debug option in Cargo.toml. By running gdb targets/test_xxx, I can list and debug the code in the test_xxx executable. However, I could not step into the functions in the crate. There is no debug information. How can I build/link the crate to include its debug information?
  • (lldb)Xcode上的运行时错误[关闭]((lldb) Run time Error on Xcode [closed])
    问题 关闭。 此问题不符合 Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 7年前关闭。 改进这个问题 我有这段代码,但它对我不起作用并产生运行时错误 -(void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //position button myButton.frame = CGRectMake(50, 50, 50, 50); [myButton setTitle:@"\u2606" forState:UIControlStateNormal]; // add targets and actions [myButton addTarget:self action:@selector(myButtonClicked) forControlEvents:UIControlEventTouchUpInside]; // add to a view [self.view addSubview
  • Xcode附加到进程不显示NSLog(Xcode attach to process doesn't display NSLog)
    问题 我刚刚开始使用Apple Watch。 我找到了“五分钟监视包”中的说明,以使iOS应用程序和监视包应用程序都在模拟器中运行,并且两个进程都附加到LLDB调试器。 我要做的是启动并退出iOS应用,以在SIM卡中安装当前版本。 然后,我切换到watchKit方案并启动该方案,该方案将在手表模拟器上显示我的手表应用UI。 然后,我在模拟器中启动相应的iOS应用程序,然后在Xcode菜单中单击“附加到进程”,以将调试器附加到正在运行的iOS应用程序。 这行得通。 我可以在监视工具包InterfaceController或我的iOS应用程序中设置断点,而调试器应在该位置中断。 但是,我在iOS应用程序的调试控制台中没有看到NSLog()语句。 (我确实从WatchKit扩展代码中看到了日志语句。)如果我在iOS应用程序中设置了一个断点,则断点确实会在该断点处停止。 我认为缺少NSLog的控制台输出与在sim卡上附加正在运行的进程而不是从Xcode启动它有关,但我不知道那是什么。 (顺便说一句,将操作附加到从断点调用NSLog的断点上也不会显示,但是“ log message”调试器命令会显示。有人有什么见解吗?) 编辑:iOS应用中的代码似乎无关紧要。 就我而言,这是一个简单的IBAction,它已附加到iOS应用故事板上的一个按钮上: - (IBAction
  • Exception Breakpoints - LLDB Results vs. GDB
    I have searched for topics specifically to this question but have not found anything close to my experience. Forgive me if I have overlooked the answer. I am familiar with GDB and exception points, break points, etc... but the following test of debugging in GDB vs LDB left me without a plausible response. Global Test Values Xcode 4.2.1 New Single Window Project (Default template w/no changes) Arc Enabled Storyboard Enabled Case 1 - GDB Debugger Exception Breakpoint Values: Exception - All Break on - Throw Arguments - None Result - No Crash Case 2 - LLDB Debugger Exception Breakpoint Values
  • 安卓底层 native 代码的调试
    1. 背景用于熟悉了解 dalvik 虚拟机中类的加载流程(native层)有 APP 源码情况如何配置,可以在 Android studio 实现图形化调试(IDE 自带功能)。无 APP 源码的情况下如何实现图形化调试。2. 环境要求配置Android Studio版本:2.2以上(低版本不支持 native 调试)安装插件:LLDB 调试器 (http://lldb.llvm.org/)一份编译好的安卓系统源码(Android4.4.4)3. 有 APP 源码的情况创建一个 Android 工程(作为调试的目标进程)带调试符号文件的替换包含调试符号的文件都保存在编译后的 symbols 目录下手机中原有的/system/lib/libdvm.so 替换成带调试符号信息的 libdvm.so (编译后的安卓系统源码out/target/product/hammerhead/symbols/system/lib/libdvm.so)为目标进程-配置调试模式选择调试模式-Native 模式,在工具栏中-选择点击运行下面的按钮 Edit Configuration:配置好后名字为 APP配置之后,直接以 debug 模式运行 APP手机出现 Wating for Debuger 界面后点击 Android studio 调试器中的暂停按钮如下有三个窗口:Frames
  • Mac OS X 10.8.4上的iOS Simulator中的随机(lldb)崩溃(Random (lldb) crashes in iOS Simulator on Mac OS X 10.8.4)
    问题 我一直在努力解决一个奇怪的问题。 在最初关闭iOS模拟器的情况下运行我的应用时,它可以正确启动。 但是,如果我在不关闭模拟器的情况下再次运行它,它将崩溃,并仅在错误日志中打印(lldb)。 如果我再次运行它(不关闭模拟器),它将正确启动。 如果我再次做同样的事情,它就会崩溃。 因此,似乎每隔第二次。 当使用iOS设备时,它可以工作,并且我有一个完全相同的项目学院,并且在iOS模拟器中没有遇到此问题。 我所尝试的是清理,重置内容和设置,手动删除应用程序,重新启动计算机并重新安装Xcode。 回答1 OS X 10.8.4出现问题,导致随机模拟器崩溃。 https://devforums.apple.com/message/817179#817179 建议了两种解决方法,包括切换到GDB。 看这里: 我们发现了问题。 当它杀死正在调试的应用程序时,这是一个进程在“ debugserver”中杀死竞争条件,从而导致此问题的发生。 所有人都应该使用的解决方法是先杀死该应用程序,等待其消失,然后再单击CMD + R。 现在,仅按CMD + R即可快速完成操作,这在10.8.4中更频繁地显示此线程争用情况。 回答2 Apple在2013年6月13日的版本中解决了此问题: 回答3 Yes, I meet it too. In Product -> edit scheme change