`
hunterdragon
  • 浏览: 6898 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Sun的编译器cc以及其调试程序dbx使用

阅读更多

    最近参加了一个项目,因为是做C的,原本以为是使用gcc和gdb来作为编译和调试的工具。结果未曾想,开发环境上居然只允许使用cc编译器,没用过啊。。参数都不知道,没办法,查资料。。啥文的都有,可是苦了俺了。自己忘性大,还是做下纪录,以备后查。

 

CC编译器:

    开发调试常用参数:

      -g 输出带有调试信息的编译结果

      -c 编译文件,但是不做连接(link)操作,默认生成与.c文件同名的.o文件

      -l 指定要是用的lib名称,如libsocket.so则为 -lsocket

      -I 指定要去寻找include头文件的路径,可以复数指定。

      -G 用来指定生成共享库文件

      -o 用来指定生成的文件名

      -m64 Sun Studio 12开始使用的参数,代替-xarch=v9。通常与-xarch=sparc一起使用

      -xcode=[V] 指定程序的ABI空间地址的生成方式。在做成shared library时须指定,Sun默认为-xcode=abs44,不能用这个参数来生成64位shared library。

    参照资料:

            http://docs.sun.com/app/docs/doc/820-1209/bjatt?l=ja&a=view

            http://docs.sun.com/app/docs/doc/819-0389/advanced?l=ja

            http://primeserver.fujitsu.com/unix/soft/opt/oemss12/

例:

    cc -g -c a.c -lsocket -lnsl

    cc -G b.c -o b.so ./a.o

    cc -g a.c -I../include/

 

dbx调试用工具:

    dbx 待调试可执行文件

    (dbx) 命令行

      print 打印指定变量或者表达式的值

      run   执行程序

      runargs 指定程序执行的参数。例如命令行上要用 ./prog 10 20作为启动命令的话,则使用(dbx) runargs 10 20进行启动

      watch 监视某个变量的值,在每次stop后会自动显示出来

      stop at 用于指定断点,主要是某行的断点。比如 stop at a.c:30 的含义是停止于a.c程序的第30行

      stop in 用于指定断点,主要是针对函数名称。比如 stop in doSum 的含义是一旦doSum方法被调用,则停止

      step 步进

      step up 完成当前函数,并且停止到调用函数的下一行。

      cont 继续执行。(continue)

      check 指定rtc检查内容

        -all 指定为全部

        -leaks 指定为内存泄漏,访问异常等

        -memuse 指定为监视内存使用

      showleaks 显示内存泄漏等异常信息

      showmemuse 显示内存的使用量

 

用rtc来进行调试等操作时,可以在dbx的帮助下,看到是否有内存没有声明就被访问,是否有越界访问等等信息。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics