Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26604
  • 博文数量: 2
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 16:34
文章分类

全部博文(2)

文章存档

2013年(2)

我的朋友

分类: C/C++

2013-02-27 16:07:55

    一直从事OpenSolaris上的开发,现将自己开发应用程序经常使用调试技巧和大家分享一下,也希望能够和大家多多交流,共同提高。    

    我们先从一个简单的测试程序(test1.c)开始:

    

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. void
  3. func()
  4. {
  5.         char *p = NULL;

  6.         *p = 0xff;
  7. }

  8. int
  9. main(int argc, char **argv)
  10. {
  11.         int ret = 0;

  12.         func();

  13.         return (ret);
  14. }

    在solaris开发环境上编译该文件并运行:

    

    程序存在很严重的bug,运行程序直接崩溃并产生core文件供调试分析(注,如果没有产生core文件,请在solaris上通过coreadm进行相关配置), 在solaris上可以

使用pstack或者mdb工具来打印出程序崩溃时的堆栈信息,定位程序出现问题的地方:

    

 

    同时在solaris上还有一个很好的工具apptrace用于实现程序运行时调用库函数:

   

    

    如果需要了解程序运行时进行的系统调用和捕获的信号,可以使用truss命令来跟踪:

    

    

 

   

    


 

        

阅读(2157) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:solaris的进程工具集

给主人留下些什么吧!~~