XCode下的GDB命令实例

XCode下的GDB命令实例,第1张

概述对于大多数Cocoa程 序员来说,最常用的debugger莫过于Xcode自带的调试工具了。而实际上,它正是gdb的一个图形化包装。相对于gdb,图形化带来了很多便利, 但同时也缺少了一些重要功能。而且在某些情况下,gdb反而更加方便。因此,学习gdb,了解一下幕后的实质,也是有必要的。 gdb可以通过终端运行,也可以在Xcode的控制台调用命令。本文将通过终端讲述一些gdb的基本命令和技巧。 首 对于大多数Cocoa程 序员来说,最常用的deBUGger莫过于Xcode自带的调试工具了。而实际上,它正是gdb的一个图形化包装。相对于gdb,图形化带来了很多便利, 但同时也缺少了一些重要功能。而且在某些情况下,gdb反而更加方便。因此,学习gdb,了解一下幕后的实质,也是有必要的。

gdb可以通过终端运行,也可以在Xcode的控制台调用命令。本文将通过终端讲述一些gdb的基本命令和技巧。

首先,我们来看一个例子:

    #import <Foundation/Foundation.h> 

    int main(int argc,char **argv) 
    
        NSautoreleasePool *pool = [[NSautoreleasePool alloc] init]; 
        NSLog(@"Hello,world!"); 
        [pool release]; 

        return 0; 
    }

我们把文件命名为test.m,然后编译:

    gcc -g -framework Foundation test.m

准备工作已经完成。现在我们可以开始调试了。只要把要调试的文件名作为参数,启动gdb:

    gdb a.out

gdb启动后会输出很多法律声明之类的信息。无视它们,最后我们看到一个提示

    (gdb)

成功!现在deBUGger和刚才编译好的程序都被装载了。不过,现在程序还没有开始运行。因为gdb在程序开始前把它暂停了,好让我们有机会设置调试参数。这次我们不需要做特别设置,所以马上开始运行吧:

    (gdb) run 

    Starting program: /Users/mikeash/shell/a.out 
    Reading symbols for shared librarIEs .++++....................... done 
    2011-06-16 20:28:53.658 a.out[2946:a0f] Hello,world! 

    Program exited normally. 
    (gdb)

糟糕,程序竟然exited normally了(==|||)。这可不行,我们得让他崩溃才行。所以我们给这个小程序添加一个BUG:

    int x = 42; 
    NSLog("Hello,world! x = %@",x);
nice。这样一来程序就会漂亮地崩溃了:

    (gdb) run 

    Starting program: /Users/mikeash/shell/a.out 
    Reading symbols for shared librarIEs .++++....................... done 

    Program received signal EXC_BAD_ACCESS,Could not access memory. 
总结

以上是内存溢出为你收集整理的XCode下的GDB命令实例全部内容,希望文章能够帮你解决XCode下的GDB命令实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1057137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存