看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《villix (瓜子被蜀國的狗吃了)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : c++ : 問題(Question): : 請問有方法可以抓出此堆疊所有的function name嗎 : 補充說明(Supplement): : 網路上面我只有找到__FUNCTION__可以直接印出現在這個function的名稱 : 然後我也有找到backtrace這個,可是這好像一定要linux環境,所以想請問一下 : 大家有沒有什麼好方法可以知道堆疊中的函式名稱,謝謝QQ 原PO想要的是看 call stack 吧? 很久沒在 VC 上寫程式了, 忘記 VC 的 debugger 有沒有顯示 call stack 的功能。 (理論上應該要有才對?@@a) 我自己常因為工作需要,在針對會被不同 task/thread 呼叫的 function 做 debug 時會做類似以下這樣的事情: [原本的 code] // file: foo.h int foo(int n, char* str, bool flag); // file: foo.c int foo(int n, char* str, bool flag) { ... } [修改後的 code] // file: foo.h #define foo(n, str, flag) foo_dbg((n), (str), (flag), __FUNCTION__) // int foo(int n, char* str, bool flag); int foo_dbg(int n, char* str, bool flag, char* caller); // file: foo.c // int foo(int n, char* str, bool flag) int foo_dbg(int n, char* str, bool flag, char* caller) { printf("%s: caller is %s\n", __FUNCTION__, caller); ... } 然後 debug 完再把這些恢復原狀。XD 雖然不是能列出完整的 call stack,有時也是挺有用的。XD 供參考。 -- Need Help With Women? Can UNIX Help? $> man woman $> Segmentation fault (core dumped) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.80.206.65 ※ 編輯: saxontai 來自: 111.80.206.65 (04/27 02:09)
villix:謝謝^^ 04/27 02:13
aecho:又學了一招,好棒 ^^ 04/27 06:05
xatier:推簽名檔XD 04/27 08:59
final01:No manual entry for woman 04/27 17:17
※ 編輯: saxontai 來自: 210.80.75.2 (09/24 19:17)