在gdb里面无法调用math库函数?
编译运行下面一个小程序:
我在编译的时候已经指定了-g,所以有调试信息。为何printf/putchar都可以条用,而math里面的cos却不能调用?
我在ubuntu16.04上。
多谢指点!
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
int i=3;
void f(){
++i;
printf("%d\n",i);
}
int main(){
double d=cos(0.0);
printf("%f\n",d);
return 0;
}
它打印"1.000000",如预期。如果我在gdb命令行调用函数:
(gdb) b main
Breakpoint 1 at 0x40055b: file x.c, line 10.
(gdb) r
Starting program: /home/x/a.out
Breakpoint 1, main () at x.c:10
10 ++i;
(gdb) call f()
4
(gdb) call f() # ok
5
(gdb) call cos(0.0)
No symbol "cos" in current context. # 为什么找不到?
(gdb) call printf("%d\n",i) # ok
5
$1 = 2
(gdb) call putchar('a')
$2 = 97
我在编译的时候已经指定了-g,所以有调试信息。为何printf/putchar都可以条用,而math里面的cos却不能调用?
我在ubuntu16.04上。
多谢指点!
...全文
相关推荐
vim+gcc+gdb使用合集
"这篇文章是关于在Linux环境下使用vim编辑器、gcc编译器和gdb调试器的基础教程,适合已经有一定Linux基础的初学者。作者通过简洁的目录结构,介绍了这三个工具的主要用法。"## 一、v
math-emu.rar_V2
这种操作通常需要深入理解计算机体系结构,包括CPU的寄存器结构、中断处理机制,以及系统调用接口等。压缩包中的"math-emu.c"文件,根据其扩展名".c",可以判断这是一个C语言源代码文件。
如何通过sys.settrace拦截C扩展模块的函数调用?
由于C语言的执行效率较高,很多性能敏感的模块都是用C语言开发的,如NumPy、SciPy等科学计算库以及部分内置模块如os和math等。
Math-Modeling-Code:2021数学模型分析源代码
C++的调试工具如gdb,以及单元测试框架如Google Test,可以帮助开发者检测和修复错误。8.
Linux -C程序设计大全 程序员典藏 源代码
这些库函数和系统调用是构建复杂应用程序的基础。


