Linux下C应用程序开发
xxgdb 你能在一个 Xterm 窗口里键入下面的命令来运行它: xxgdb 表 27.2. xxgdb 命令行选项. 选 项 描 述 nx 告诉 xxgdb 不执行 .gdbinit 文件. calls 注意: 在你的系统上安装 calls , 以超级用户身份登录后执行下面的步骤: 1. 解压和 untar 文件. 2. cd 进入 calls untar 后建立的子目录. 3. 把名叫 calls 的文件移动到 /usr/bin 目录. 4. 把名叫 calls.1 的文件移动到目录 /usr/man/man1 . 5. 删除 /tmp/calls 目录. 这些步骤将把 calls 程序和它的指南页安装载你的系统上. ------------------------------------------------------------------------------ 当 calls 打印出调用跟踪结果时, 它在函数后面用中括号给出了函数所在文件的文件名: main [hello.c] printf fact recursive in factorial.c >;>;>; total [static in calculate.c] #include stdio.h>; static void my_print (char *); main () void count_sum() void my_print (char *string) void my_print2 (char *string) printf (The string printed backward is %s , string2); 1 __underflow [hello.c] calltree cproto #include stdio.h>; static void my_print (char *); main () void my_print (char *string) void my_print2 (char *string) size = strlen (string); printf (The string printed backward is %s , string2); /* hello.c */ int main(void); int my_print(char *string); int my_print2(char *string); indent
xxgdb 是 gdb 的一个基于 X Window 系统的图形界面. xxgdb 包括了命令行版的 gdb 上的所有特性. xxgdb 使你能通过按按钮来执行常用的命令. 设置了断点的地方也用图形来显示.
你能用 gdb 里任何有效的命令行选项来初始化 xxgdb . 此外 xxgdb 也有一些特有的命令行选项, 表 27.2 列出了这些选项.
db_name 指定所用调试器的名字, 缺省是 gdb.
db_prompt 指定调试器提示符, 缺省为 gdb.
gdbinit 指定初始化 gdb 的命令文件的文件名, 缺省为 .gdbinit.
bigicon 使用大图标.
你可以在 sunsite.unc.edu FTP 站点用下面的路径:
/pub/Linux/devel/lang/c/calls.tar.Z
来取得 calls , 一些旧版本的 Linux CD-ROM 发行版里也附带有. 因为它是一个有用的工具, 我们在这里也介绍一下. 如果你觉得有用的话, 从 BBS, FTP, 或另一张CD-ROM 上弄一个拷贝. calls 调用 GCC 的预处理器来处理给出的源程序文件, 然后输出这些文件的里的函数调用树图.
--
如果函数并不是向 calls 给出的文件里的, calls 不知道所调用的函数来自哪里, 则只显示函数的名字:
calls 不对递归和静态函数输出. 递归函数显示成下面的样子:
静态函数象这样显示:
作为一个例子, 假设用 calls 处理下面的程序:
static void my_print2 (char *);
{
char my_string[] = hello world!;
my_print (my_string);
my_print2 (my_string);
my_print (my_string);
}
{
int i,sum=0;
for(i=0; i1000000; i++)
sum += i;
}
{
count_sum();
(The string is %s , string);
}
{
char *string2;
int size, i,sum =0;
}
将产生如下的输出:
2 main
3 my_print [hello.c]
4 count_sum [hello.c]
5 printf
6 my_print2 [hello.c]
7 count_sum
8 strlen
9 malloc
10 printf
calls 有很多命令行选项来设置不同的输出格式, 有关这些选项的更多信息请参考 calls 的指南页. 方法是在命令行上键入 calls -h .
calltree与calls类似,初了输出函数调用树图外,还有其它详细的信息。可以从sunsite.unc.edu FTP 站点用下面的路径
:/pub/Linux/devel/lang/c/calltree.tar.gz得到calltree.
cproto 读入 C 源程序文件并自动为每个函数产生原型申明. 用 cproto 可以在写程序时为你节省大量用来定义函数原型的时间.
如果你让 cproto 处理下面的代码(cproto hello.c):
static void my_print2 (char *);
{
char my_string[] = hello world!;
my_print (my_string);
my_print2 (my_string);
}
{
printf (The string is %s , string);
}
{
char *string2;
int size, i;
string2 = (char *) malloc (size + 1);
for (i = 0; i size; i++)
string2[size -1 - i] = string;
string2[size] = '';
}
你将得到下面的输出:
这个输出可以重定向到一个定义函数原型的包含文件里.
indent 实用程序是 Linux 里包含的另一个编程实用工具. 这个工具简单的说就为你的代码产生美观的缩进的格式. indent 也有很多选项来指定如何格式化你的源代码.这些选项的更多信息请看indent 的指南页, 在命令行上键入 indent -h .
- Windows CE下驱动程序开发基础(04-10)
- 基于WinCE6.0的LPC3250串口驱动程序开发(01-05)
- 基于ARM的嵌入式系统程序开发要点(12-02)
- 第7节:程序开发的方法以及代码备份管理技巧(11-22)
- 单片机程序开发时,初级工程师常犯的一个错误(11-22)
- 51单片机程序开发入门知识(11-20)