色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

c++filt命令:用于解析C++和Java中被修飾的符號

Linux愛好者 ? 來源:Linux愛好者 ? 作者:戀貓大鯉魚 ? 2021-02-09 18:22 ? 次閱讀

1.命令簡介

c++filt 命令可用于解析 C++ 和 Java 中被修飾的符號,比如變量與函數名稱。

我們知道, 在 C++ 和 Java 中, 允許函數重載,也就是說我們可以寫出多個同名但參數類型不同的函數,其實現依賴于編譯器的名字改編(Name Mangling)機制,即編譯器會將函數的名稱進行修飾,加入參數信息。考察如下程序:

使用 g++ 編譯上面的 print.cpp 生成目標文件 print.o。

g++-cprint.cpp-oprint.o

然后使用命令 strings 查找 print.o 中的可打印字符串。

stringsprint.o
readelf
GCC:(GNU)4.8.520150623(RedHat4.8.5-4)
.symtab
.strtab
.shstrtab
.rela.text
.data
.bss
.rodata
.rela.init_array
.comment
.note.GNU-stack
.rela.eh_frame
print.cpp
_ZStL8__ioinit
_Z41__static_initialization_and_destruction_0ii
_ZL5dTest
_GLOBAL__sub_I__Z5printRKSs
_Z5printRKSs
_ZSt4cout
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
_ZNSolsEPFRSoS_E
_ZNSt8ios_base4InitC1Ev
__dso_handle
_ZNSt8ios_base4InitD1Ev
__cxa_atexit

找到其中兩個字符串,分別是_ZL5dTest_Z5printRKSs,根據其包含的內容,我們大致能夠猜測,兩個字符串分別對應源碼中的常量 dTest 和函數 print()。使用 c++filt 進行符號解析(symbol demangling)來驗證我們的猜想。

c++filt_ZL5dTest
dTest

c++filt_Z5printRKSs
print(std::basic_string,std::allocator>const&)

猜測正確,源碼文件中的變量名和函數名被修飾后,通過 c++filt 命令可以還原回來,這正是 c++filt 命令的功能。

2.命令格式

c++filt[-_|--strip-underscore]
[-n|--no-strip-underscore]
[-p|--no-params]
[-t|--types]
[-i|--no-verbose]
[-sformat|--format=format]
[--help][--version][symbol...]

注意,如果沒有給出符號參數 [symbol…],c++filt 將從標準輸入中讀取符號名稱。

3.選項說明

-_,--strip-underscore
在某些系統中,C和C++編譯器都在每個名字前面加下劃線。例如,C 名稱 foo 獲得低級名稱為_foo。此選項用于刪除初始下劃線,c++filt 是否默認刪除下劃線是依賴于目標的
-n,--no-strip-underscore
不刪除初始下劃線
-p,--no-params
當解析函數名時,不顯示函數參數的類型
-t,--types
試圖解析類型與函數名
-i,--no-verbose
輸出結果中不包括任何實現細節
-s,--format=FORMAT
c++filt 可以解析不同編譯器修飾的符號,此選項用于指明符號修飾所采用的方法:
"auto":根據可執行文件自動選擇符號解析方法,此為默認選項
"gnu":GNU C++ compiler (g++)的符號修飾方法
"lucid":Lucid compiler (lcc)的符號修飾方法
"arm":C++ Annotated Reference Manual 指明的方法
"hp":HP compiler (aCC)的符號修飾方法
"edg":EDG compiler 的符號修飾方法
"gnu-v3":GNU C++ compiler (g++) with the V3 ABI 的符號修飾方法
"java":GNU Java compiler (gcj)的符號修飾方法
"gnat":GNU Ada compiler (GNAT)的符號修飾方法
--help
顯示幫助信息
--version
顯示版本信息
@FILE
從文件 FILE 中讀取命令行選項,讀取的選項將插入到@FILE 選項的位置。如果文件不存在,或者無法讀取,那么選項@FILE 將被按照字面意義處理,而不是被忽略

4.常用示例

(1)解析編譯器 g++ 修飾的函數名稱。還是以第一節“1.命令簡介”中函數 print() 的名字為例。

c++filt-sgnu-v3_Z5printRKSs
print(std::basic_string,std::allocator>const&)

(2)解析編譯器 g++ 修飾的函數名稱,但不顯示函數參數類型。

c++filt-p_Z5printRKSs
print

(3)解析編譯器 g++ 修飾的變量名稱。還是以第一節“1.命令簡介”中變量 dTest 的名字為例。

c++filt_ZL5dTest
dTest

參考文獻

[1] c++filt manual
[2] mangle和demangle

責任編輯:xj

原文標題:每天一個 Linux 命令(105):c++filt 命令

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11342

    瀏覽量

    210155
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73795

原文標題:每天一個 Linux 命令(105):c++filt 命令

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業的 C++ Excel 組件,可以用在各種 C++ 框架和應用程序中。Spire.XLS for C++ 提供了一個對象模型 Excel
    的頭像 發表于 01-14 09:40 ?107次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    同樣是函數,在CC++中有什么區別

    同樣是函數,在 CC++ 中有什么區別? 第一個返回值。 C語言的函數可以不寫返回值類型,編譯器會默認為返回 int。 但是 C++ 的函數,除了構造和析構這兩個特殊的函數,必須
    的頭像 發表于 11-29 10:25 ?404次閱讀

    C7000 C/C++優化指南用戶手冊

    電子發燒友網站提供《C7000 C/C++優化指南用戶手冊.pdf》資料免費下載
    發表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優化指南用戶手冊

    TMS320C6000優化C/C++編譯器v8.3.x

    電子發燒友網站提供《TMS320C6000優化C/C++編譯器v8.3.x.pdf》資料免費下載
    發表于 11-01 09:35 ?0次下載
    TMS320<b class='flag-5'>C</b>6000優化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器v8.3.x

    C語言和C++中結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?336次閱讀

    C7000優化C/C++編譯器

    電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
    發表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C語言和
    的頭像 發表于 10-29 17:31 ?409次閱讀

    OpenHarmony標準系統C++公共基礎類庫案例:HelloWorld

    1、程序簡介該程序是基于凌蒙派OpenHarmony-v3.2.1標準系統C++公共基礎類庫的簡單案例:HelloWorld。主要講解C++公共基礎類庫案例如何搭建和編譯。2、程序解析2.1、創建
    的頭像 發表于 08-13 08:23 ?557次閱讀
    OpenHarmony標準系統<b class='flag-5'>C++</b>公共基礎類庫案例:HelloWorld

    C++語言基礎知識

    電子發燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發表于 07-19 10:58 ?7次下載

    C++中實現類似instanceof的方法

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有insta
    的頭像 發表于 07-18 10:16 ?652次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的方法

    C/C++代碼動態測試工具VectorCAST插樁功能演示#代碼動態測試 #C++

    C++代碼
    北匯信息POLELINK
    發布于 :2024年04月18日 11:57:45

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
    的頭像 發表于 04-14 11:43 ?2742次閱讀
    鴻蒙OS開發實例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環中的錯誤

    在前兩篇博客中,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客中,我們將仔細研究以 C++ 中?for?循環為中心的特定規則。
    的頭像 發表于 03-28 13:53 ?845次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環中的錯誤

    嵌入式C語言面試大挑戰

    C++中static關鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態數據成員和靜態成員方法靜態數據成員
    發表于 03-05 14:18 ?380次閱讀
    嵌入式<b class='flag-5'>C</b>語言面試大挑戰

    c語言,c++,java,python區別

    C語言、C++Java和Python是四種常見的編程語言,各有優點和特點。 C語言: C語言是一種面向過程的編程語言。它具有底層的特性,能
    的頭像 發表于 02-05 14:11 ?2552次閱讀
    主站蜘蛛池模板: 国产AV精品一区二区三区漫画 | 国产精品国产三级国产AV麻豆 | 交video| 日本黄色官网 | 日本三级黄色大片 | 野花日本韩国视频免费高清观看 | 洗濯屋H纯肉动漫在线观看 羲义嫁密着中出交尾gvg794 | 午夜福利不卡片在线播放免费 | 女厕所边摸边吃奶边做爽视频 | 久久中文字幕综合不卡一二区 | 国产精品看高国产精品不卡 | 成a人片亚洲日本久久 | 不卡无线在一二三区 | 国产人妻精品无码AV在线五十路 | 成人在线免费视频 | 夜色55夜色66亚洲精品网站 | 热久久伊大人香蕉网老师 | 丰满人妻妇伦又伦精品APP国产 | 亚洲精品第一页中文字幕 | 亚洲蜜桃AV永久无码精品放毛片 | 99国产精品人妻无码免费 | 色迷迷电影| 伦理片午夜在线视频 | 国产精品成人免费观看 | 吃奶摸下的羞羞漫画 | 午夜向日葵高清在线观看 | 2021全国精品卡一卡二 | 日本精品久久无码影院 | 色偷偷成人网免费视频男人的天堂 | 亚洲日韩欧美国产中文在线 | 美女叉腿掰阴大胆艺术照 | 欧美成人性色生活18黑人 | 国产午夜视频在线 | 在线播放真实国产乱子伦 | 99久久久免费精品国产 | 高清国产免费观看视频在线 | 护士12p| 人妻熟妇乱又伦精品视频中文字幕 | 91嫩草国产在线观看免费 | 韩国三级久久精品 | 狠狠色综合7777久夜色撩人 |