Chapter 6. 工具的使用

Table of Contents
6.1. 我怎样调试fork函数产生的子进程?
6.2. 怎样通过其他库文件建立新的库文件?
6.3. 怎样创建动态连接库(shared library)/dlls?
6.4. 我能更改一个动态连接库里的目标吗?
6.5. 我能在一个运行着的程序中生成堆栈映象吗?

6.1. 我怎样调试fork函数产生的子进程?

根据可用的工具有两种不同的方法:

你的调试器(debugger)可能有允许你选择是否跟踪调用‘fork()’以后的父或子进程 的选项,对于某些目的来说那已经足够了。

替换方法是,你的调试器可能有一个选项允许你将它依附(attach)到一个正在执行 的程序。这样你可以依附调试器到一个已经开始执行的子进程。如果你不需要从 子进程一开始就开始测试,这通常已经足够。否则,你会希望在子进程的‘fork()’ 调用后插入一个‘sleep()’调用,或者插入如下的循环:

     {
         volatile int f = 1;
         while(f);
     }
    

这样子进程将一直在此循环不往下执行直到你用调试器设定‘f’为0。

并且记住,使用调试器并非是找到你程序中错误的唯一方法;在很多Unix系统 上有一些工具程序可用来跟踪系统调用和信号,而且丰富的日志经常也是有 用的。