亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linux下c開發(fā)工具介紹二(轉).txt

?? LINUX下的安裝聲卡等操作和技巧介紹
?? TXT
字號:
作者:dio
email: hao@peng.com.cn
日期:8/21/2001 2:15:12 PM
另外的 C 編程工具 

xxgdb 
xxgdb 是 gdb 的一個基于 X Window 系統(tǒng)的圖形界面. xxgdb 包括了命令行版的 gdb 上的所有特性. xxgdb 使你能通過按按鈕來執(zhí)行常用的命令. 設置了斷點的地方也用圖形來顯示. 

你能在一個 Xterm 窗口里鍵入下面的命令來運行它: 

xxgdb 
你能用 gdb 里任何有效的命令行選項來初始化 xxgdb . 此外 xxgdb 也有一些特有的命令行選項, 表 27.2 列出了這些選項. 

表 27.2. xxgdb 命令行選項. 

選 項 描 述 
db_name 指定所用調試器的名字, 缺省是 gdb. 
db_prompt 指定調試器提示符, 缺省為 gdb. 
gdbinit 指定初始化 gdb 的命令文件的文件名, 缺省為 .gdbinit. 

nx 告訴 xxgdb 不執(zhí)行 .gdbinit 文件. 
bigicon 使用大圖標. 


calls 
你可以在 sunsite.unc.edu FTP 站點用下面的路徑: 
/pub/Linux/devel/lang/c/calls.tar.Z 
來取得 calls , 一些舊版本的 Linux CD-ROM 發(fā)行版里也附帶有. 因為它是一個有用的工具, 我們在這里也介紹一下. 如果你覺得有用的話, 從 BBS, FTP, 或另一張CD-ROM 上弄一個拷貝. calls 調用 GCC 的預處理器來處理給出的源程序文件, 然后輸出這些文件的里的函數(shù)調用樹圖. 


注意: 在你的系統(tǒng)上安裝 calls , 以超級用戶身份登錄后執(zhí)行下面的步驟: 1. 解壓和 untar 文件. 2. cd 進入 calls untar 后建立的子目錄. 3. 把名叫 calls 的文件移動到 /usr/bin 目錄. 4. 把名叫 calls.1 的文件移動到目錄 /usr/man/man1 . 5. 刪除 /tmp/calls 目錄. 這些步驟將把 calls 程序和它的指南頁安裝載你的系統(tǒng)上. 

-------------------------------------------------------------------------------- 

當 calls 打印出調用跟蹤結果時, 它在函數(shù)后面用中括號給出了函數(shù)所在文件的文件名: 

main [hello.c] 
如果函數(shù)并不是向 calls 給出的文件里的, calls 不知道所調用的函數(shù)來自哪里, 則只顯示函數(shù)的名字: 

printf 
calls 不對遞歸和靜態(tài)函數(shù)輸出. 遞歸函數(shù)顯示成下面的樣子: 

fact <<< recursive in factorial.c >>> 
靜態(tài)函數(shù)象這樣顯示: 

total [static in calculate.c] 
作為一個例子, 假設用 calls 處理下面的程序: 

#include 

static void my_print (char *); 
static void my_print2 (char *); 

main () 
{ 
char my_string[] = "hello world!"; 
my_print (my_string); 
my_print2 (my_string); 
my_print (my_string); 
} 

void count_sum() 
{ 
int i,sum=0; 
for(i=0; i<1000000; i++) 
sum += i; 
} 

void my_print (char *string) 
{ 
count_sum(); 
printf ("The string is %s ", string); 
} 

void my_print2 (char *string) 
{ 
char *string2; 
int size, i,sum =0; 

count_sum(); 
size = strlen (string); 
string2 = (char *) malloc (size + 1); 
for (i = 0; i < size; i++) string2[size -1 - i] = string[i]; 
string2[size] = ; 
for(i=0; i<5000000; i++) 
sum += i; 

printf ("The string printed backward is %s ", string2); 
} 
將產生如下的輸出: 

1 __underflow [hello.c] 
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 
calltree與calls類似,初了輸出函數(shù)調用樹圖外,還有其它詳細的信息。 
可以從sunsite.unc.edu FTP 站點用下面的路徑:/pub/Linux/devel/lang/c/calltree.tar.gz得到calltree. 

cproto 
cproto 讀入 C 源程序文件并自動為每個函數(shù)產生原型申明. 用 cproto 可以在寫程序時為你節(jié)省大量用來定義函數(shù)原型的時間. 
如果你讓 cproto 處理下面的代碼(cproto hello.c): 

#include 

static void my_print (char *); 
static void my_print2 (char *); 

main () 
{ 
char my_string[] = "hello world!"; 
my_print (my_string); 
my_print2 (my_string); 
} 

void my_print (char *string) 
{ 
printf ("The string is %s ", string); 
} 

void my_print2 (char *string) 
{ 
char *string2; 
int size, i; 

size = strlen (string); 
string2 = (char *) malloc (size + 1); 
for (i = 0; i < size; i++) 
string2[size -1 - i] = string[i]; 
string2[size] = ; 

printf ("The string printed backward is %s ", string2); 
} 
你將得到下面的輸出: 

/* hello.c */ 

int main(void); 

int my_print(char *string); 

int my_print2(char *string); 
這個輸出可以重定向到一個定義函數(shù)原型的包含文件里. 

indent 
indent 實用程序是 Linux 里包含的另一個編程實用工具. 這個工具簡單的說就為你的代碼產生美觀的縮進的格式. indent 也有很多選項來指定如何格式化你的源代碼.這些選項的更多信息請看indent 的指南頁, 在命令行上鍵入 indent -h . 


下面的例子是 indent 的缺省輸出: 

運行 indent 以前的 C 代碼: 

#include 

static void my_print (char *); 
static void my_print2 (char *); 

main () 
{ 
char my_string[] = "hello world!"; 
my_print (my_string); 
my_print2 (my_string); 
} 

void my_print (char *string) 
{ 
printf ("The string is %s ", string); 
} 

void my_print2 (char *string) 
{ 
char *string2; int size, i; 

size = strlen (string); 
string2 = (char *) malloc (size + 1); 
for (i = 0; i < size; i++) string2[size -1 - i] = string[i]; 
string2[size] = ; 

printf ("The string printed backward is %s ", string2); 
} 
運行 indent 后的 C 代碼: 

#include 
static void my_print (char *); 
static void my_print2 (char *); 
main () 
{ 
char my_string[] = "hello world!"; 
my_print (my_string); 
my_print2 (my_string); 
} 
void 
my_print (char *string) 
{ 
printf ("The string is %s ", string); 
} 
void 
my_print2 (char *string) 
{ 
char *string2; 
int size, i; 
size = strlen (string); 
string2 = (char *) malloc (size + 1); 
for (i = 0; i < size; i++) 
string2[size - 1 - i] = string[i]; 
string2[size] = ; 
printf ("The string printed backward is %s ", string2); 
} 
indent 并不改變代碼的實質內容, 而只是改變代碼的外觀. 使它變得更可讀, 這永遠是一件好事. 

gprof 
gprof 是安裝在你的 Linux 系統(tǒng)的 /usr/bin 目錄下的一個程序. 它使你能剖析你的程序從而知道程序的哪一個部分在執(zhí)行時最費時間. 

gprof 將告訴你程序里每個函數(shù)被調用的次數(shù)和每個函數(shù)執(zhí)行時所占時間的百分比. 你如果想提高你的程序性能的話這些信息非常有用. 

為了在你的程序上使用 gprof, 你必須在編譯程序時加上 -pg 選項. 這將使程序在每次執(zhí)行時產生一個叫 gmon.out 的文件. gprof 用這個文件產生剖析信息. 

在你運行了你的程序并產生了 gmon.out 文件后你能用下面的命令獲得剖析信息: 

gprof 
參數(shù) program_name 是產生 gmon.out 文件的程序的名字. 

為了說明問題,在程序中增加了函數(shù)count_sum()以消耗CPU時間,程序如下 
#include 

static void my_print (char *); 
static void my_print2 (char *); 

main () 
{ 
char my_string[] = "hello world!"; 
my_print (my_string); 
my_print2 (my_string); 
my_print (my_string); 
} 

void count_sum() 
{ 
int i,sum=0; 
for(i=0; i<1000000; i++) 
sum += i; 
} 

void my_print (char *string) 
{ 
count_sum(); 
printf ("The string is %s ", string); 
} 

void my_print2 (char *string) 
{ 
char *string2; 
int size, i,sum =0; 

count_sum(); 
size = strlen (string); 
string2 = (char *) malloc (size + 1); 
for (i = 0; i < size; i++) string2[size -1 - i] = string[i]; 
string2[size] = ; 
for(i=0; i<5000000; i++) 
sum += i; 

printf ("The string printed backward is %s ", string2); 
} 
$ gcc -pg -o hello hello.c 
$ ./hello 
$ gprof hello | more 
將產生以下的輸出 
Flat profile: 

Each sample counts as 0.01 seconds. 
% cumulative self self total 
time seconds seconds calls us/call us/call name 
69.23 0.09 0.09 1 90000.00 103333.33 my_print2 
30.77 0.13 0.04 3 13333.33 13333.33 count_sum 
0.00 0.13 0.00 2 0.00 13333.33 my_print 

% 執(zhí)行此函數(shù)所占用的時間占程序總 
time 執(zhí)行時間的百分比 

cumulative 累計秒數(shù) 執(zhí)行此函數(shù)花費的時間 
seconds (包括此函數(shù)調用其它函數(shù)花費的時間) 

self 執(zhí)行此函數(shù)花費的時間 
seconds (調用其它函數(shù)花費的時間不計算在內) 

calls 調用次數(shù) 

self 每此執(zhí)行此函數(shù)花費的微秒時間 
us/call 

total 每此執(zhí)行此函數(shù)加上它調用其它函數(shù) 
us/call 花費的微秒時間 

name 函數(shù)名 

由以上數(shù)據(jù)可以看出,執(zhí)行my_print()函數(shù)本身沒花費什么時間,但是它又調用了count_sum()函數(shù),所以累計秒數(shù)為0.13. 

技巧: gprof 產生的剖析數(shù)據(jù)很大, 如果你想檢查這些數(shù)據(jù)的話最好把輸出重定向到一個文件里. 



 

來源:LinuxAid  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡视频在线播放| 一区二区三区欧美在线观看| 九九精品一区二区| 欧美精品一区二区三区蜜臀| 黑人精品欧美一区二区蜜桃| 久久久美女艺术照精彩视频福利播放| 国内精品伊人久久久久av影院| 久久久精品黄色| 99久久99久久久精品齐齐| 樱桃国产成人精品视频| 欧美日韩午夜在线| 国产在线播放一区三区四| 欧美激情一区二区三区四区| 91久久人澡人人添人人爽欧美| 五月激情六月综合| 精品国产免费久久| 91社区在线播放| 首页国产欧美久久| 国产日韩欧美麻豆| 在线观看国产91| 经典三级视频一区| 亚洲色图色小说| 91精品国产综合久久精品性色 | 中文字幕一区二区5566日韩| 色婷婷久久99综合精品jk白丝 | 久久精品亚洲精品国产欧美kt∨| 99精品欧美一区| 日韩成人一级大片| 中文字幕在线观看不卡| 欧美一级日韩一级| 99久久精品国产观看| 免费成人美女在线观看.| ...xxx性欧美| 精品国产乱子伦一区| 欧洲视频一区二区| 国产黄人亚洲片| 天天综合色天天综合色h| 国产欧美视频一区二区| 欧美日本免费一区二区三区| 国产精品99久久久久久久女警| 亚洲超丰满肉感bbw| 欧美国产日韩亚洲一区| 日韩无一区二区| 在线观看国产精品网站| 不卡一区在线观看| 久久99久久久欧美国产| 午夜国产不卡在线观看视频| 国产精品高潮久久久久无| 精品久久久久久久久久久久包黑料| 一本大道久久a久久精二百| 国产一区二区三区免费在线观看| 亚洲影视在线播放| 亚洲免费三区一区二区| 国产午夜一区二区三区| 日韩欧美国产高清| 欧美三级日韩在线| 色老综合老女人久久久| youjizz国产精品| 国产风韵犹存在线视精品| 日本成人中文字幕| 午夜精品视频一区| 亚洲高清三级视频| 亚洲已满18点击进入久久| 亚洲日本中文字幕区| 国产精品久久久久影院色老大| 亚洲人成7777| 国产性做久久久久久| 欧美精品一区二区三| 日韩欧美激情在线| 日韩欧美中文字幕一区| 日韩欧美激情四射| 日韩精品一区二区三区老鸭窝| 91精品国产入口在线| 欧美精品免费视频| 欧美精三区欧美精三区| 欧美日韩三级一区二区| 欧美日韩aaaaa| 欧美老年两性高潮| 日韩一区二区三区在线| 欧美一卡二卡三卡四卡| 欧美一区二区播放| 精品日韩欧美在线| 国产色一区二区| 日本一区二区综合亚洲| 中文天堂在线一区| 成人欧美一区二区三区| 伊人一区二区三区| 午夜精品免费在线| 久久99国产精品尤物| 九色|91porny| 成人免费视频caoporn| 99精品一区二区| 欧洲av在线精品| 欧美久久久一区| 欧美精品一区二区三| 国产精品乱人伦中文| 依依成人综合视频| 麻豆91免费看| 成人精品鲁一区一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 91福利小视频| 欧美成人video| 国产精品久久一卡二卡| 亚洲一区二区三区自拍| 日韩电影一区二区三区| 国产乱国产乱300精品| 成人黄色小视频| 欧美影院一区二区| 欧美成人精品3d动漫h| 中文字幕日韩一区二区| 日韩精品久久理论片| 99久久精品国产一区| 色婷婷香蕉在线一区二区| 欧美一区二区观看视频| 欧美韩日一区二区三区四区| 亚洲精品国产品国语在线app| 美国十次综合导航| 91丨porny丨户外露出| 91精品国产丝袜白色高跟鞋| 中文字幕欧美国产| 视频在线观看一区| 成人小视频免费在线观看| 欧美美女激情18p| 国产精品久久网站| 久久国内精品自在自线400部| 一本色道久久综合狠狠躁的推荐| 精品少妇一区二区三区免费观看| 一区二区三区在线观看欧美| 国产麻豆精品95视频| 欧美日韩国产综合一区二区| 国产精品免费免费| 青青草成人在线观看| 91黄色免费版| 国产精品女主播av| 精品在线免费视频| 欧美日韩视频在线第一区| 国产精品美女视频| 国产综合成人久久大片91| 欧美精品日日鲁夜夜添| 亚洲激情自拍视频| 成人av在线播放网站| 日韩欧美成人一区| 亚洲成va人在线观看| 色一情一伦一子一伦一区| 国产三级久久久| 国产在线精品免费av| 666欧美在线视频| 亚洲一区二区免费视频| 99精品久久久久久| 欧美国产精品中文字幕| 国产成人在线视频网站| 久久综合九色综合欧美98 | 日本成人在线一区| 欧美日韩视频在线观看一区二区三区 | 亚洲欧洲另类国产综合| 国产一区 二区 三区一级| 日韩伦理免费电影| 国产精品正在播放| 久久婷婷国产综合精品青草| 免费观看在线色综合| 日韩精品一区二区三区视频| 免费久久99精品国产| 欧美一级一级性生活免费录像| 性久久久久久久久久久久| 欧美日本一道本| 肉丝袜脚交视频一区二区| 7777精品伊人久久久大香线蕉的| 无码av免费一区二区三区试看| 欧美日韩一卡二卡| 婷婷开心久久网| 欧美一区二区视频在线观看| 日韩中文字幕麻豆| 日韩欧美国产不卡| 国产麻豆成人精品| 国产精品九色蝌蚪自拍| av激情成人网| 一区二区三区免费网站| 欧美亚洲国产一区在线观看网站| 亚洲国产视频a| 日韩亚洲欧美高清| 国产成人激情av| 亚洲免费观看在线视频| 日本高清不卡在线观看| 亚洲二区在线视频| 日韩视频在线永久播放| 国产一区二三区好的| 中文天堂在线一区| 欧美视频一二三区| 久久成人av少妇免费| 中文字幕免费不卡| 91国偷自产一区二区开放时间| 亚洲地区一二三色| 精品99一区二区| 91视视频在线直接观看在线看网页在线看| 亚洲精选在线视频| 日韩一区二区精品在线观看| 国产成人综合亚洲网站| 亚洲曰韩产成在线| 欧美mv和日韩mv国产网站| 99精品偷自拍|