成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面分析講述Fedora GCC程序

系統 Linux
Fedora GCC 支持的其它調試選項還包括-p和-pg,它們會將剖析(Profiling)信息加入到最終生成的二進制代碼中。

在向大家詳細介紹Fedora GCC之前,首先讓大家了解下Linux,然后全面介紹Fedora GCC,希望對大家有用。Linux用戶、系統管理員和Linux系統自學者的參考書或培訓教材,還可供希望轉入嵌入式領域的科研和工程技術人員參考使用。Fedora GCC 2009-03-02 19:13文件名:http2.c

1.命令:[root@localhost ~]# gcc -g http2.c -o http2
得到調試信息:
[root@localhost ~]# gcc -g http2.c -o http2
http2.c: 在函數 ‘main’ 中:
http2.c:51: 警告:隱式聲明與內建函數 ‘bzero’ 不兼容
http2.c:61: 警告:傳遞參數 2 (屬于 ‘bind’)時在不兼容的指針類型間轉換
http2.c:81: 警告:傳遞參數 2 (屬于 ‘accept’)時在不兼容的指針類型間轉換
http2.c: 在函數 ‘ParseHttpRequest’ 中:
http2.c:153: 警告:隱式聲明與內建函數 ‘strstr’ 不兼容
http2.c:153: 警告:隱式聲明與內建函數 ‘strlen’ 不兼容
http2.c:158: 警告:隱式聲明與內建函數 ‘memset’ 不兼容
http2.c:159: 警告:隱式聲明與內建函數 ‘memcpy’ 不兼容
http2.c: 在函數 ‘do_proxy’ 中:
http2.c:315: 警告:隱式聲明與內建函數 ‘strcat’ 不兼容
http2.c:316: 警告:隱式聲明與內建函數 ‘strlen’ 不兼容
[root@localhost ~]# ./http2正在監聽[root@localhost ~]#

2.為了更快速地發現錯誤所在,可以使用GDB進行跟蹤調試,方法如下:
[root@localhost ~]# gdb http2
GNU gdb Red Hat Linux (6.5-15.fc6rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

當GDB提示符出現的時候,表明GDB已經做好準備進行調試了,現在可以通過run命令讓程序開始在GDB的監控下運行:Starting program: /root/http2正在監聽Program exited normally.

3.下面為搜到的信息,尚未實驗當GDB提示符出現的時候,表明GDB已經做好準備進行調試了,現在可以通過run命令讓程序開始在GDB的監控下運行:
Starting program: /home/xiaowp/thesis/gcc/code/crash
Input an integer:10
Program received signal SIGSEGV, Segmentation fault.
0x4008576b in _IO_vfscanf_internal () from /lib/libc.so.6

仔細分析一下GDB給出的輸出結果不難看出,程序是由于段錯誤而導致異常中止的,說明內存操作出了問題,具體發生問題的地方是在調用
_IO_vfscanf_internal ( )的時候。為了得到更加有價值的信息,可以使用GDB提供的回溯跟蹤命令backtrace,執行結果
如下:
#0 0x4008576b in _IO_vfscanf_internal () from /lib/libc.so.6
#1 0xbffff0c0 in ?? ()
#2 0x4008e0ba in scanf () from /lib/libc.so.6
#3 0x08048393 in main () at crash.c:11
#4 0x40042917 in __libc_start_main () from /lib/libc.so.6

跳過輸出結果中的前面三行,從輸出結果的第四行中不難看出,GDB已經將錯誤定位到crash.c中的第11行了。現在仔細檢查一下:
frame 3 #3 0x08048393 in main () at crash.c:11 11 scanf("%d", input);

使用GDB提供的frame命令可以定位到發生錯誤的代碼段,該命令后面跟著的數值可以在backtrace命令輸出結果中的行首找到。現在已經發現錯
誤所在了,應該將scanf("%d", input);改為scanf("%d", &input);完成后就可以退出GDB了,命令如下:

GDB的功能遠遠不止如此,它還可以單步跟蹤程序、檢查內存變量和設置斷點等。調試時可能會需要用到編譯器產生的中間結果,這時可以使用-save-temps選項,讓Fedora GCC將預處理代碼、匯編代碼和目標代碼都作為文件保存起來。如果想檢查生成的代碼是否能夠通過手工調整的辦法來提高執行性能,在編譯過程中生成的中間文件將會很有幫助,具體情況如下:

# Fedora GCC -save-temps foo.c -o foo
# ls foo*
foo foo.c foo.i foo.s

Fedora GCC 支持的其它調試選項還包括-p和-pg,它們會將剖析(Profiling)信息加入到最終生成的二進制代碼中。剖析信息對于找出程序的性能瓶頸很有幫助,是協助Linux Fedora GCC程序員開發出高性能程序的有力工具。在編譯時加入-p選項會在生成的代碼中加入通用剖析工具(Prof)能夠識別的統計信息,而- pg選項則生成只有GNU剖析工具(Gprof)才能識別的統計信息。

***提醒一點,雖然Fedora GCC允許在優化的同時加入調試符號信息,但優化后的代碼對于調試本身而言將是一個很大的挑戰。代碼在經過優化之后,在源程序中聲明和使用的變量很可能不再使用,控制流也可能會突然跳轉到意外的地方,循環語句有可能因為循環展開而變得到處都有,所有這些對調試來講都將是一場噩夢。建議在調試的時候***不使用任何優化選項,只有當程序在最終發行的時候才考慮對其進行優化。

【編輯推薦】

  1. 分析淺談詳解Fedora 9嵌入式
  2. 分析深談安全安裝Fedora linux桌面
  3. 學習如何Fedora 8安裝桌面
  4. 介紹在Fedora Core 5系統中安裝Realplayer
  5. 讓你們知道Fedora 9桌面系統也是很行的
責任編輯:佚名 來源: csdn
相關推薦

2009-12-18 16:08:17

Fedora proc

2009-12-23 15:17:55

Fedora gcc安

2009-12-22 14:54:37

Fedora 12正式

2009-12-23 18:23:53

Fedora Core

2009-12-28 17:41:10

Fedora Linu

2009-12-24 09:47:17

Linux之父

2009-12-23 15:57:27

Fedora GCC

2010-03-10 17:37:48

Linux磁盤配額

2009-12-28 16:23:51

Fedora grub

2009-12-18 18:22:31

Fedora SCSI

2009-12-18 14:50:43

Fedora進程管理

2009-12-29 16:37:35

Ubuntu 9.10

2009-10-23 19:11:32

linux集群

2009-12-31 16:01:35

Ubuntu ISO

2009-12-28 16:39:56

Fedora 9

2009-12-25 09:17:50

2009-12-22 15:14:38

Fedora 8安裝

2009-12-23 13:33:23

Fedora 8設備驅

2009-12-28 17:23:54

Fedora Samb

2009-12-23 18:54:53

Fedora Core
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品福利视频一区二区三区 | 亚洲视频在线一区 | 1级毛片| 国产精品一区在线观看你懂的 | 亚洲男人天堂av | 夜夜草导航 | 黑人巨大精品欧美黑白配亚洲 | 国产日韩欧美一区 | 婷婷免费在线 | 久久久成人精品 | 男人的天堂在线视频 | 亚洲成人一区二区 | 成人性视频免费网站 | 成年人在线观看 | 国产精品久久 | 男人的天堂久久 | 国产一区二区a | 国产特黄一级 | 免费亚洲一区二区 | 亚洲风情在线观看 | 国产1页 | 亚洲成av人片在线观看 | 亚洲午夜电影 | 久久首页| 欧美电影免费网站 | 一区二区不卡高清 | 日韩精品一区在线观看 | 国产精品91网站 | 国产真实乱对白精彩久久小说 | 亚洲日韩中文字幕一区 | 在线中文字幕亚洲 | 国产精品视频导航 | 亚洲精品www| a级片在线观看 | 福利国产 | 天天天天操| 亚洲国产免费 | 一区二区三区视频在线免费观看 | 91在线一区 | av三级在线观看 | 999久久久久久久久6666 |