看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c++ 問題(Question): 請問有方法可以抓出此堆疊所有的function name嗎 補充說明(Supplement): 網路上面我只有找到__FUNCTION__可以直接印出現在這個function的名稱 然後我也有找到backtrace這個,可是這好像一定要linux環境,所以想請問一下 大家有沒有什麼好方法可以知道堆疊中的函式名稱,謝謝QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.44.228
purpose:各大 Debugger 都能顯示,你是要自己印? 04/27 00:30
purpose:自己印的困難點在,如果是比如 user32.dll 某函數,你要有 04/27 00:33
purpose:處理 pdb 檔的能力,才能把位址轉函數名稱。 04/27 00:33
villix:恩是想要自己印QQ 04/27 00:40
villix:所以說windows沒有像是backtrace之類的函式喔XD 04/27 00:41
villix:原本沒想說這麼複雜的 04/27 00:41
sunneo:用winapi StackWalk 04/27 02:18
villix:恩找了很久都沒找到這個~謝謝^^~這個應該就可以了 04/27 02:40
purpose:CodeProject 這篇寫得很棒,自己看 DbgHelp 文件來寫也不 04/27 09:03
purpose:容易,這作者都幫你寫好了。先用StackWalk64取得frame裡面 04/27 09:04
purpose:的位址,再用 SymGetSymFromAddr64 把位址轉函數名稱 04/27 09:04
purpose:最後用 UnDecorateSymbolName 將名稱修飾去掉,一波三折 04/27 09:05
VictorTom:Cool~~先bookmark起來:) 04/27 09:10
saxontai:雖然將來用到的機會不高,還是通篇抓進Evernote存下來XD 04/27 14:43