日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linux下編譯生成符號(hào)表的方法 (linux 編譯符號(hào)表)

Linux是一種廣泛使用的開(kāi)源操作系統(tǒng),許多開(kāi)發(fā)人員使用Linux進(jìn)行開(kāi)發(fā)。當(dāng)你在Linux上編譯代碼時(shí),你可能想要生成一個(gè)符號(hào)表,以便在調(diào)試代碼時(shí)進(jìn)行調(diào)試。在本文中,我們將研究如何在Linux上編譯生成符號(hào)表。

創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元松江做網(wǎng)站,已為上家服務(wù),為松江各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

符號(hào)表是編譯器生成的一種數(shù)據(jù)結(jié)構(gòu),它包含了編譯后可執(zhí)行文件中的符號(hào)名稱和它們所屬的代碼和數(shù)據(jù)段的地址。當(dāng)你在調(diào)試程序時(shí),可以使用符號(hào)表來(lái)確定代碼的行號(hào)和變量的名稱,這對(duì)于找出錯(cuò)誤非常有用。

生成符號(hào)表的方法

在Linux上,可以使用GNU工具鏈來(lái)構(gòu)建應(yīng)用程序和庫(kù)。GNU工具鏈?zhǔn)且惶组_(kāi)源的工具,用于生成可執(zhí)行程序和庫(kù)。在GNU工具鏈中,GCC(GNU C Compiler)是一種C語(yǔ)言編譯器,它可以生成符號(hào)表。

這里有三種方法可以生成符號(hào)表。

1. 編譯時(shí)生成符號(hào)表

當(dāng)你使用GCC編譯程序時(shí),可以添加一個(gè)-g選項(xiàng),以生成符號(hào)表。例如:

“`

gcc -g mn.c -o mn

“`

在這個(gè)例子中,-g選項(xiàng)告訴GCC生成符號(hào)表,并將生成的可執(zhí)行文件命名為mn。如果你想在編譯時(shí)生成更詳細(xì)的符號(hào)表,你可以嘗試使用更高級(jí)的-g選項(xiàng),例如:

“`

gcc -g3 mn.c -o mn

“`

在這個(gè)例子中,-g3選項(xiàng)告訴GCC生成高度詳細(xì)的符號(hào)表。

2. 使用objcopy生成符號(hào)表

另一種生成符號(hào)表的方法是使用objcopy工具。objcopy是GNU binutils軟件包的一部分,可以用于復(fù)制和轉(zhuǎn)換目標(biāo)文件。objcopy可以將可執(zhí)行文件中的符號(hào)表提取出來(lái),并將其保存到一個(gè)獨(dú)立的符號(hào)表文件中。例如:

“`

objcopy –only-keep-debug mn mn.debug

“`

在這個(gè)例子中,objcopy命令從主程序mn中提取符號(hào)表,并將其保存到一個(gè)名為mn.debug的獨(dú)立文件中。這個(gè)文件可以用來(lái)在調(diào)試時(shí)進(jìn)行調(diào)試。

3. 使用strip生成符號(hào)表

最后一種生成符號(hào)表的方法是使用strip工具。strip是GNU binutils軟件包的一部分,可以用于從可執(zhí)行文件和目標(biāo)文件中刪除符號(hào)表和調(diào)試信息。但是,你可以使用strip將符號(hào)表保存到一個(gè)單獨(dú)的文件中。例如:

“`

strip –only-keep-debug mn -o mn.debug

“`

在這個(gè)例子中,strip命令從主程序mn中刪除符號(hào)表和調(diào)試信息,并將符號(hào)表保存到一個(gè)名為mn.debug的獨(dú)立文件中。

使用符號(hào)表進(jìn)行調(diào)試

生成符號(hào)表之后,你可以使用GDB(GNU調(diào)試器)來(lái)調(diào)試你的程序。使用GDB的步驟如下:

1. 運(yùn)行GDB,指定程序和符號(hào)表文件:

“`

gdb mn -s mn.debug

“`

在這個(gè)例子中,gdb命令告訴GDB用mn作為可執(zhí)行文件,并使用mn.debug作為符號(hào)表文件。

2. 開(kāi)始調(diào)試:

“`

(gdb) start

“`

這個(gè)命令會(huì)啟動(dòng)程序,并在之一行暫停執(zhí)行。

3. 使用GDB命令進(jìn)行調(diào)試,例如設(shè)置斷點(diǎn):

“`

(gdb) break mn.c:10

“`

這個(gè)命令會(huì)在mn.c文件的第10行設(shè)置一個(gè)斷點(diǎn)。

4. 繼續(xù)執(zhí)行程序:

“`

(gdb) continue

“`

這個(gè)命令會(huì)繼續(xù)執(zhí)行程序,直到達(dá)到斷點(diǎn)。

5. 在程序執(zhí)行時(shí)監(jiān)視變量的值:

“`

(gdb) watch my_variable

“`

這個(gè)命令會(huì)監(jiān)視名為my_variable的變量,并在它的值發(fā)生改變時(shí)暫停程序執(zhí)行。

結(jié)論

在Linux上編譯生成符號(hào)表是調(diào)試代碼的關(guān)鍵步驟。你可以使用GCC編譯器的-g選項(xiàng)、objcopy工具或strip工具來(lái)生成符號(hào)表。使用GDB調(diào)試器可以使用這些符號(hào)表來(lái)調(diào)試程序。在生成符號(hào)表時(shí),記得生成盡可能詳細(xì)的符號(hào)表,以方便調(diào)試。

相關(guān)問(wèn)題拓展閱讀:

  • c++語(yǔ)言編程如何進(jìn)行編譯

c++語(yǔ)言編程如何進(jìn)行編譯

點(diǎn)上面的感嘆號(hào)

這個(gè)問(wèn)題真不好回答。我嘗試作答,不采納沒(méi)關(guān)系,我可能說(shuō)了半天也沒(méi)說(shuō)到重點(diǎn)。

首先要一張將要被編譯的文件的文件列表,例如windows平臺(tái)vc上的項(xiàng)目文件,linux平臺(tái)的makefile里要寫(xiě)。Mac的xcode. Android的.mk文件,都是需要來(lái)描述的。然后設(shè)置編譯參數(shù)。包括cpu指令集以及運(yùn)行平臺(tái),調(diào)試版本,優(yōu)化,引用庫(kù) 等等。接下來(lái)開(kāi)始編譯

所謂的編譯 實(shí)質(zhì)就是編譯之前 列表里的h,c 等格式文件先編譯成obj文件(Mac平孫閉棗臺(tái)mm文件和C++文件是不是都是編譯成obj不清楚)。放在一邊,然后根據(jù)配置,如果是應(yīng)用程序(apk,app,exe)那么 執(zhí)行鏈接。 否則 就是簡(jiǎn)單的放到一起 生成一個(gè).lib(windows,mac) .so .a(linux,android)。

編譯時(shí)先執(zhí)行 比 預(yù)編譯還要早的預(yù)編譯宏。具體是什么 查下 我不記得了。然后執(zhí)行預(yù)編譯。然后執(zhí)行編譯 聲明 以及態(tài)答 實(shí)現(xiàn)。將實(shí)現(xiàn)編譯進(jìn)obj,符號(hào)表 編譯到 pdb(windows) android那邊是什么格式忘記了,因?yàn)槲覜](méi)鏈接過(guò)。這個(gè)符號(hào)表 應(yīng)該 僅僅是為了調(diào)試而用,當(dāng)代碼因?yàn)楫惓6罎r(shí),可以調(diào)用 查找 符號(hào)表,得到 代則拆碼 崩潰所在行。windows可以生成dmp文件。linux,android可以生成coredump文件。

我的理解就是那么多了,希望對(duì)你有所幫助。

看你用汪陸耐什么編譯器或IDE了。如果是gcc,那么在命令提示困春符里輸入g++ -o YourExecutableFileName YourSourceFile.cpp如果是Visual C++,就是F7快悉塌捷鍵。

vi有建文件功能所以你可以直接用vitest.c或者touchtest.c都可以

至于你說(shuō)高銀什么好幾種顏色這個(gè)配念寬我真不知道什么意思vi默培亮認(rèn)不會(huì)開(kāi)啟代碼高亮的功能的寫(xiě)完之后確保你的系統(tǒng)安裝好gcc運(yùn)行g(shù)cc-otest.ca.out是鏈接之后生成的文件,跟windows下.o文件一樣錯(cuò)誤了gcc會(huì)報(bào)錯(cuò)誤行號(hào)

linux 編譯符號(hào)表的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 編譯符號(hào)表,Linux下編譯生成符號(hào)表的方法,c++語(yǔ)言編程如何進(jìn)行編譯的信息別忘了在本站進(jìn)行查找喔。

成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開(kāi)通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開(kāi)發(fā)老牌服務(wù)商!微信小程序開(kāi)發(fā),APP開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220


當(dāng)前文章:Linux下編譯生成符號(hào)表的方法 (linux 編譯符號(hào)表)
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/dhdghog.html