我是一名学生,遇到一个问题:当我在Linux程序中使用pow
或asin
,并尝试用GDB进行调试时,会出现错误:undefined reference to ‘pow’。
我知道为了解决这个问题,在GCC编译器中需要添加-lm
参数。那么在GDB中是否有类似-lm
的参数呢?
-lm
选项编译源代码(这将消除数学函数的未定义引用错误),并且为了使gdb中的调试符号可用,您需要使用-g
选项编译源代码。
gcc -g -o myprog main.c -lm
要调试程序,请使用以下命令:
gdb ./myprog
在gdb中打印或使用任何函数时,请使用gdb的call
函数。
call (double)pow(3.0, 2.0)
请确保使用正确的函数语法,否则gdb会返回错误的答案。
call (double) pow (double , double)
gdb使用编译文件进行调试。因此,在使用-lm和-g之后,您可以使用gdb正常运行结果文件。换句话说,您应该运行以下内容,这对我很有效:
gcc -g test.c -lm
gdb ./a.out
-lm
这样的关键字来调试 GDB? - ks1322