第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

跟蹤Linux中本地函數(shù)調(diào)用的工具

跟蹤Linux中本地函數(shù)調(diào)用的工具

動(dòng)漫人物 2019-10-14 15:21:39
我正在尋找可以跟蹤可執(zhí)行文件中本地定義的函數(shù)的ltrace或strace之類(lèi)的工具。ltrace僅跟蹤動(dòng)態(tài)庫(kù)調(diào)用,而strace僅跟蹤系統(tǒng)調(diào)用。例如,給定以下C程序:#include <stdio.h>int triple ( int x ){  return 3 * x;}int main (void){  printf("%d\n", triple(10));  return 0;}使用來(lái)運(yùn)行程序ltrace將顯示對(duì)的調(diào)用,printf因?yàn)檫@是標(biāo)準(zhǔn)庫(kù)函數(shù)(在我的系統(tǒng)上是動(dòng)態(tài)庫(kù)),并且strace將顯示啟動(dòng)代碼,用于實(shí)現(xiàn)printf的系統(tǒng)調(diào)用以及關(guān)閉代碼的所有系統(tǒng)調(diào)用。 ,但是我想要讓我知道該函數(shù)triple已被調(diào)用的東西。假設(shè)優(yōu)化編譯器未內(nèi)聯(lián)局部函數(shù),并且二進(jìn)制文件未剝離(刪除符號(hào)),是否有工具可以做到這一點(diǎn)?編輯一些澄清:如果該工具還提供非本地功能的跟蹤信息,也可以。我不想在支持特定工具的情況下重新編譯程序,可執(zhí)行文件中的符號(hào)信息就足夠了。如果可以像使用ltrace / strace一樣使用該工具附加到現(xiàn)有進(jìn)程,我將非常好。
查看完整描述

3 回答

?
www說(shuō)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

System Tap可以在現(xiàn)代的Linux機(jī)器(Fedora 10,RHEL 5等)上使用。


首先下載para-callgraph.stp腳本。


然后運(yùn)行:


$ sudo stap para-callgraph.stp 'process("/bin/ls").function("*")' -c /bin/ls

0    ls(12631):->main argc=0x1 argv=0x7fff1ec3b038

276  ls(12631): ->human_options spec=0x0 opts=0x61a28c block_size=0x61a290

365  ls(12631): <-human_options return=0x0

496  ls(12631): ->clone_quoting_options o=0x0

657  ls(12631):  ->xmemdup p=0x61a600 s=0x28

815  ls(12631):   ->xmalloc n=0x28

908  ls(12631):   <-xmalloc return=0x1efe540

950  ls(12631):  <-xmemdup return=0x1efe540

990  ls(12631): <-clone_quoting_options return=0x1efe540

1030 ls(12631): ->get_quoting_style o=0x1efe540


查看完整回答
反對(duì) 回復(fù) 2019-10-14
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

假設(shè)您可以使用gcc選項(xiàng)重新編譯(無(wú)需更改源代碼)要跟蹤的代碼-finstrument-functions,則可以使用etrace來(lái)獲取函數(shù)調(diào)用圖。


輸出如下所示:


\-- main

|   \-- Crumble_make_apple_crumble

|   |   \-- Crumble_buy_stuff

|   |   |   \-- Crumble_buy

|   |   |   \-- Crumble_buy

|   |   |   \-- Crumble_buy

|   |   |   \-- Crumble_buy

|   |   |   \-- Crumble_buy

|   |   \-- Crumble_prepare_apples

|   |   |   \-- Crumble_skin_and_dice

|   |   \-- Crumble_mix

|   |   \-- Crumble_finalize

|   |   |   \-- Crumble_put

|   |   |   \-- Crumble_put

|   |   \-- Crumble_cook

|   |   |   \-- Crumble_put

|   |   |   \-- Crumble_bake

在Solaris上,truss(等效于strace)可以過(guò)濾要跟蹤的庫(kù)。當(dāng)我發(fā)現(xiàn)strace不具備這種功能時(shí),我感到很驚訝。


查看完整回答
反對(duì) 回復(fù) 2019-10-14
  • 3 回答
  • 0 關(guān)注
  • 722 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)