作者saxontai (黑暗,點綴孤零零的星)
看板C_and_CPP
標題Re: [問題] function name
時間Wed Apr 27 02:08:27 2011
※ 引述《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)