- 論壇徽章:
- 1
|
本帖最后由 asker160 于 2016-10-21 16:51 編輯
編譯運行下面一個小程序:
- #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命令行調(diào)用函數(shù):
- (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
復制代碼 我在編譯的時候已經(jīng)指定了-g,所以有調(diào)試信息。為何printf/putchar都可以條用,而math里面的cos卻不能調(diào)用?
我在ubuntu16.04上
多謝指點!
|
|