首页 > 其他 > 详细

使用ncc分析代码

时间:2015-07-01 13:55:51      阅读:440      评论:0      收藏:0      [点我收藏+]

 

1 ncc是一个编译器, 用于输出程序的一些调用信息等, 可以查看函数调用关系, 支持函数指针, 查看数据结构和代码. 可以用来分析和理解代码.

“" ... with ncc, in less than 40 minutes I was able to comprehend the console i/o subsystem of the linux kernel and within an hour I had already submitted a patch to the l-k mailing list. I‘m waiting for linus to apply..." an ncc user who wishes to remain anonymous

”

2 安装ncc,  pacman, yum或者 apt-get等, 或者http://students.ceid.upatras.gr/~sxanth/ncc/

3 更改makefile

     gcc改成 ncc -ncgcc -ncld -ncfabs -ncspp -nccpp=编译器

     ar 改成nccar         ld 改成nccld

     man ncc 可以看帮助, ncc源码包里面的README有详细帮助.

生成程序的目录, 可以看到 xxx.nccout, 注意不包括动态链接库中的文件, 查看动态链接库,可以在编译动态链接库的地方使用ncc 等替换默认的gcc等,  有些程序编译的时候会清理临时文件, 所以动态链接库的 xxx.nccout文件会被清理掉, 解决办法是, 查看编译的详细输出信息, 复制下来, 更改gcc等, 然后手动执行, 可以生成xxx.nccout

4 使用nccnavi 查看生成的nccout文件, man nccnavi有帮助

  G全局变量和函数等

 E最上层函数 

q退出或上一层

O 文件中所有的函数

回车, 进入mode2和返回

Mode2 中

< > 历史记录

空格, 查看代码

C 执行shell命令

上下左右可以移动, 首字母可以快速定位.

具体的说明请查看帮助文档, 摸索一段时间自然清楚, 可以配合gdb和nccnavi来分析程序流程和代码等.

5如果不同文件中有同名函数, 可能会报错, 这个时候不适合把多个文件的 xxx.nccout文件组合到一起

6 c99等新标准的代码可能会报错, 可能需要改动一下.

7 如果不能查看代码, 可以使用clang编译器代替gcc编译器, 貌似是和高版本gcc的格式兼容性不好的问题, 无法识别.c文件(clang不会安装可以百度)

使用ncc分析代码

原文:http://www.cnblogs.com/yiifburj/p/4613009.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!