日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux中使用nm和grep技巧(linuxnmgrep)

Linux是許多程序員喜歡使用的操作系統(tǒng)之一,因?yàn)樗峁┝嗽S多強(qiáng)大的工具來幫助程序員進(jìn)行工作。其中兩個(gè)在調(diào)試和分析二進(jìn)制文件時(shí)非常有用的工具是nm和grep。本文將介紹如何在Linux中使用這兩個(gè)工具。

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有資中免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、什么是nm

nm是Linux上查看目標(biāo)文件或可執(zhí)行文件中符號表的命令。符號表是一個(gè)列表,其中包含所有全局變量、函數(shù)、類、結(jié)構(gòu)體和其他代碼實(shí)體的名稱和地址。nm命令提供了各種選項(xiàng),以過濾輸出并僅顯示您感興趣的符號。以下是一些常見的選項(xiàng):

1. -A:顯示所有符號,包括本地符號。

2. -g:僅顯示全局符號。

3. -D:僅顯示動態(tài)符號。

4. -t :指定輸出格式??捎酶袷桨╯ysv、bsd、posix和darwin。

nm命令的輸出格式可能有所不同,取決于您使用的選項(xiàng)和文件類型。無論如何,您將會看到一個(gè)列表,其中包含所選文件中涉及的所有全局符號。該列表通常按字母順序排列,并包含每個(gè)符號的類型和地址。

為了更好地理解nm的輸出及其含義,我們來嘗試一下:

在Linux終端中,我們創(chuàng)建了一個(gè)新的C文件,以及一個(gè)名為“test”的可執(zhí)行文件。該C文件包含了一個(gè)簡單的打印語句和一個(gè)全局整數(shù)變量:

“`

#include

int global_int = 32;

void print_message() {

printf(“Hello, World!\n”);

}

int mn() {

print_message();

printf(“The value of global_int is %d.\n”, global_int);

return 0;

}

“`

要查看“test”可執(zhí)行文件中的符號表,您可以使用以下命令:`nm test`。輸出的結(jié)果如下:

“`

0000000000004010 T mn

0000000000004027 T print_message

0000000000601028 D global_int

0000000000400b20 r __FRAME_END__

0000000000601028 B __bss_start

0000000000601028 b completed.6527

0000000000601018 b dtor_idx.6529

0000000000400900 t deregister_tm_clones

0000000000400990 t register_tm_clones

00000000004009d0 t __do_global_dtors_aux

0000000000600e48 t frame_dummy

0000000000601000 t __do_global_ctors_aux

00000000004008c0 t _init

0000000000400b30 R _IO_stdin_used

“`

您可以看到有三個(gè)符號被列出:`mn`、`print_message`和`global_int`。其中,`mn`和`print_message`是C文件中定義的函數(shù)的名稱,`global_int`是C文件中定義的全局變量的名稱。如果您仔細(xì)看,您可能會注意到“global_int”前面有一個(gè)“D”字母,表示這是一個(gè)定義符號(也稱為數(shù)據(jù)符號),而“mn”和“print_message”前面有一個(gè)“T”字母,表示這是一個(gè)文本符號(也稱為代碼符號)。

二、什么是grep

grep是一種Linux命令,用于在文件中查找字符串匹配項(xiàng)。grep非常靈活,可以使用各種選項(xiàng)以不同的方式搜索匹配項(xiàng)。以下是一些常見的選項(xiàng):

1. -i:不區(qū)分大小寫地搜索。

2. -n:顯示行號。

3. -r:在目錄及其子目錄中遞歸搜索。

4. -v:僅顯示未匹配的行。

5. -w:僅匹配完全匹配的單詞。

grep命令可以與其他命令一起使用,以便將輸出重定向到另一個(gè)文件或進(jìn)一步處理。grep也可以使用正則表達(dá)式,以便更精細(xì)地匹配需要搜索的文本。以下是一些常見的正則表達(dá)式符號:

1. ^:表示以什么開頭。

2. $:表示以什么結(jié)尾。

3. +:表示出現(xiàn)一次或多次。

4. *:表示出現(xiàn)任意次。

5. [ ]:表示范圍。

為了更好地理解grep和它的使用,我們來演示一下:

我們將使用grep和nm命令一起查找特定符號名稱。在上面的例子中,我們已經(jīng)知道了三個(gè)符號的名稱:“mn”、“print_message”和“global_int”。但是在實(shí)際開發(fā)過程中,通常會遇到更復(fù)雜的符號名稱。例如,想象一下您正在嘗試解決一個(gè)系統(tǒng)崩潰問題,并且需要找到涉及特定函數(shù)名的所有可執(zhí)行文件。在這種情況下,grep可以派上用場。

要查找所有可執(zhí)行文件中包含特定函數(shù)名的文件,您可以使用以下命令:

“`

find / -type f -perm +111 -exec nm {} \; | grep -w ‘print_message’

“`

該命令將運(yùn)行一個(gè)Linux命令`find`,該命令將在文件系統(tǒng)中查找所有具有可執(zhí)行權(quán)限(即`-perm +111`)的文件。然后它將此文件列表重定向到nm命令中,該命令將為每個(gè)文件生成符號表輸出。grep命令將搜索nm輸出以查找包含單詞“print_message”的行。

該命令的輸出將是一組在含有函數(shù)“print_message”可執(zhí)行文件中找到的行,格式類似于這種:

“`

/path/to/executable:0000000000004027 T print_message

“`

這個(gè)輸出告訴我們,函數(shù)打印語句“Hello, World!”的代碼位于“/path/to/executable”可執(zhí)行文件中的地址4027處。

三、結(jié)論

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

  • linux中“grep”和“find”的區(qū)別是什么?

linux中“grep”和“find”的區(qū)別是什么?

這是兩個(gè)不同的命令,關(guān)于grep:

Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。

而linux下的find

功能:在目錄結(jié)構(gòu)中搜索文件,并執(zhí)行指定的操作。此命令提供了相當(dāng)多的查找條件,功能很強(qiáng)大。 

語法:find 起始目錄 尋找條件 操作 

說明:find命令從指定的起始目錄開始,遞歸地搜索其各個(gè)子目錄,查找滿足尋找條件的文件并對之采取相關(guān)的操作。

所以蘆畢簡單點(diǎn)說說,grep是查找匹配條件的行,find是搜索匹配條件的文件。

Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的蠢銀設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。

Linux操作系統(tǒng)誕生于1991 年10 月5 日(這是之一次正式向外公布時(shí)間)。Linux存在著許多不同的Linux版本,但它們帶嘩宴都使用了Linux內(nèi)核。Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,比如手機(jī)、平板電腦、路由器、視頻游戲控制臺、臺式計(jì)算機(jī)、大型機(jī)和超級計(jì)算機(jī)。

嚴(yán)格來講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用Linux來形容整個(gè)基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。

關(guān)于linux nm grep的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。


當(dāng)前名稱:Linux中使用nm和grep技巧(linuxnmgrep)
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/coochgc.html