[問題] 除錯器加 MouseHook
BCB 6.0
//定義.h
//全域變數
extern int DBG__LINE__;
extern char DBG__FILE__[1024];
extern char DBG__FUNC__[1024];
//定義 DBG
#ifndef DebugH
#define DebugH
void debug(char *fmt, ...);
#define DBG\
{\
DBG__LINE__ = __LINE__;\
strcpy(DBG__FILE__,__FILE__);\
strcpy(DBG__FUNC__,__FUNC__);\
}debug
#endif
//實作.cpp
void debug(char *fmt, ...)
{
//儲存錯誤資訊 DBG__LINE__, DBG__FILE__ ...
}
//應用.cpp
void 按鈕事件()
{
DBG("儲存訊息",);//舉例這裡行號為第20行
}
以上在儲存除錯訊息時可以自動補上行號(20)、檔名(應用.cpp)
在真正執行 debug() 副程式前先記錄目前行號、檔名
但缺點就是每個按鈕事件都要寫DBG
所以想加掛勾進去
SetWindowsHookEx
( WH_MOUSE_LL,
(HOOKPROC)DBG_AUTO,
GetModuleHandle
(NULL),
NULL
);
但這樣一來就無法用類似的方法
#define DBG_AUTO\
{\
DBG__LINE__ = __LINE__;\
strcpy(DBG__FILE__,__FILE__);\
strcpy(DBG__FUNC__,__FUNC__);\
}LowLevelMouseProc
來先行取得行數、檔名等等
(其實我也不確定 #define DBG 紅色部分寫法是否正確)
請問用掛勾(Hook)要怎麼取得進入掛勾前的行數、檔名資料呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.27.2.150
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440684823.A.82B.html
→
08/27 23:39, , 1F
08/27 23:39, 1F
→
08/27 23:42, , 2F
08/27 23:42, 2F
→
08/27 23:43, , 3F
08/27 23:43, 3F
→
08/27 23:44, , 4F
08/27 23:44, 4F
→
08/27 23:45, , 5F
08/27 23:45, 5F
→
08/29 07:39, , 6F
08/29 07:39, 6F
噓
08/29 07:42, , 7F
08/29 07:42, 7F
GetClassName 最終只能得到 "TButton" 這個字串,並無法區分是哪個按鈕
→
08/29 07:42, , 8F
08/29 07:42, 8F
→
08/29 07:45, , 9F
08/29 07:45, 9F
→
08/29 07:45, , 10F
08/29 07:45, 10F
推
08/29 08:20, , 11F
08/29 08:20, 11F
→
08/29 08:20, , 12F
08/29 08:20, 12F
→
08/29 08:20, , 13F
08/29 08:20, 13F
→
08/29 08:20, , 14F
08/29 08:20, 14F
→
08/29 08:20, , 15F
08/29 08:20, 15F
看來要 debug 只能在每個按鈕事件中手動寫下要除錯的資訊。
※ 編輯: noodleT (36.237.231.124), 08/30/2015 21:08:22
→
08/31 07:53, , 16F
08/31 07:53, 16F
→
08/31 07:53, , 17F
08/31 07:53, 17F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章