存档

‘跟踪调试’ 分类的存档

gdb调试内联函数与宏

2012年8月27日 没有评论 11,849 次浏览

在用gdb调试程序的时候,会遇到内联函数与宏的问题,下面来看看。 # cat t.h #ifndef _T_H #define _T_H #include <stdio.h> static inline long utilfunc(long a, long b, long c) { long xx = a + 2; long yy... [阅读更多]

使用uml调试tcp socket的TCP_CORK

2012年8月26日 没有评论 4,049 次浏览

1,准备这么一个源文件,并编译得到对应的执行程序tcp_cork_test放到uml内: # cat tcp_cork_test.c /** * gcc -Wall -g -o tcp_cork_test tcp_cork_test.c */ #include <stdio.h> #include <stdlib.h> #include... [阅读更多]

uml使用详细

2012年8月26日 没有评论 4,105 次浏览

1,内核编译: 先说下环境如下,操作系统为CentOS 6.0 64位,除内核被升级为2.6.38.8外,其它基本环境无改变: # cat /etc/issue CentOS Linux release 6.0 (Final) Kernel \r on an \m # uname -a Linux localhost.localdomain... [阅读更多]

分类: *nix技术, 跟踪调试 标签:

试用内核gcov

2012年8月24日 9 条评论 8,108 次浏览

对于2.6.31及以上的内核,gcov已经默认支持:http://kernelnewbies.org/Linux_2_6_31#head-1c98f5fae2cb7f0fa65bb6de08d7c5c6475180a8 也就是不用再打补丁,执行make menuconfig,选中如下选项: General setup —> ... [阅读更多]

gcov初试用

2012年8月24日 没有评论 4,762 次浏览

gcov是标准的GNU覆盖测量工具,这里就尝试试用一下。有如下这么一个源文件: /** * gcc -fprofile-arcs -ftest-coverage tmp.c */ #include <stdio.h> int main(int argc, char **argv) { int i, total; ... [阅读更多]

gcc到底帮我打开了哪些具体优化选项

2012年8月18日 没有评论 4,890 次浏览

当我们使用gcc编译程序时,一般会选用某个优化编译选项,比如-O2、-O3、-Os,但这些选项使得gcc到底帮我打开了哪些具体优化选项呢?利用gcc的-Q和–help可以给我们答案: # gcc -c -Q -O3... [阅读更多]

wget/curl查看请求响应头信息

2012年7月29日 没有评论 15,797 次浏览

wget/curl是两个比较方便的测试http功能的命令行工具,大多数情况下,测试http功能主要是查看请求响应头信息,而给这两个工具加上适当的命令行参数即可轻易做到,其实查man手册就能找到对应的参数选项,不过这里仍然mark一下。 wget的debug选项: –debug ... [阅读更多]

sparse与__be32

2012年7月7日 没有评论 8,953 次浏览

sparse是一个C/C++源文件静态分析工具,官方文档:linux-2.6.38.8/Documentation/sparse.txt Man手册:http://linux.die.net/man/1/sparse 主页:https://sparse.wiki.kernel.org/index.php/Main_Page __be32,其定义扩展开为: #define... [阅读更多]

能否实现获取指定进程的调用堆栈信息?

2012年6月30日 1 条评论 9,564 次浏览

我们知道调用backtrace()可以获取当前进程的调用堆栈信息,那如果想要获取另外一个进程(我们当然知道这个进程的pid)的调用堆栈信息,是否有办法呢? 在stackoverflow上,就有人提出了这个问题,有网友给出的答案是向该进程发出一个信号,然后由该进程在信号处理函数里获取自身的调用堆栈,然后再发回来…。先不管这种方法行或不行,但至少不适合一般情况,因为它需要在指定进程里进行信号处理。 想想gdb工具,gdb几乎可以attach到任何进程上,在无需其它进程做任何额外工作的情况下,获取它的当前调用堆栈信息,所以说,回到题目问题,能够实现获取指定进程的调用堆栈信息,而恰好就有这么一个特定的工具pstack: #... [阅读更多]

完全独立的串口输出代码

2012年6月20日 2 条评论 5,518 次浏览

在内核启动的最开始,大部分设备都还没进行初始化而无法利用,但串口设备足够简单,所以下面这一段完全独立的串口输出代码对内核调试或某些特殊情况非常有益: 头文件: /** *... [阅读更多]