称
本文讲述了如何利用 Linux 系统调试,打印函数名称的方法。 此需求在程序调试和程序改进过程中被用作定位代码错误的重要方式,特别是在C/C++等语言应用时更是能够显示出很大作用。
在Linux系统中调试的首要方法就是使用 gdb 调试器,该调试器可以提供多种功能,从而实现用户所需的功能。首先,要获取程序运行时的函数名称,需要在程序源文件中插入如下代码:
#include
static void __cyg_profile_func_enter (void *func, void *caller)
{
printf("ENTER: %p\n", func);
}
static void __cyg_profile_func_exit (void *func, void *caller)
{
printf("EXIT: %p\n", func);
}
在源文件中增加上述代码后,在进行编译时需要增加链接选项 –finstrument-functions,编译指令如下:
gcc –finstrument-functions source code.c -o program
编译好之后,可以运行gdb来查看插入的函数名;
gdb program
(gdb) start
再查看函数名称:
(gdb) info func
可以使用info func 来打印出程序调用的全部函数名称,包括本次运行时进入及离开的函数。可以利用此方法来定位所有函数的调用,有助于定位程序中出现的错误。
总之,Linux系统通过gdb及以上代码插入等方法,可以将源程序增强,实现有关程序调试能力,并打印出相应的函数名称,从而快速定位问题代码并实现更高的调试效率。