最近一直在研究PERL,完成部分底层工作后,现在开始规划调度界面。
用到了EPIC,想到一个方案,就是基于EPIC来完成后续的开发,但今天思考后还是不用这个方案,所以,有必要把这段作个小结。
不过,分析的过程,其中一个重点,就是分析EPIC如何调用PadWalk,这个方面,虽然还没有找到所有的信息,但了解到了一部分。
1. 首先下载 eclipse-rcp-kepler-SR1-win32.zip
解压后,装好EPIC.这个我就不多说了,我前面有写过。
2. 启动后,Import : plugins fragments
然后,见图,选择也引入代码:
然后导入:
这里,我就不扯没用的了。
首先,我们的目标是分析EPIC如何调用了用Padwalk,
所以,应当先在所有的地方查下这个关键字:padwalk.
然后下断。
这个我就省略了。
#ifdef __cplusplus extern "C" #endif XS_EXTERNAL(boot_PadWalker); /* prototype to pass -Wmissing-prototypes */ XS_EXTERNAL(boot_PadWalker) { dVAR; dXSARGS; #if (PERL_REVISION == 5 && PERL_VERSION < 9) char* file = __FILE__; #else const char* file = __FILE__; #endif PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(items); /* -W */ #ifdef XS_APIVERSION_BOOTCHECK XS_APIVERSION_BOOTCHECK; #endif XS_VERSION_BOOTCHECK; newXS("PadWalker::peek_my", XS_PadWalker_peek_my, file); newXS("PadWalker::peek_our", XS_PadWalker_peek_our, file); newXS("PadWalker::peek_sub", XS_PadWalker_peek_sub, file); newXS("PadWalker::set_closed_over", XS_PadWalker_set_closed_over, file); newXS("PadWalker::closed_over", XS_PadWalker_closed_over, file); newXS("PadWalker::var_name", XS_PadWalker_var_name, file); newXS("PadWalker::_upcontext", XS_PadWalker__upcontext, file); #if (PERL_REVISION == 5 && PERL_VERSION >= 9) if (PL_unitcheckav) call_list(PL_scopestack_ix, PL_unitcheckav); #endif XSRETURN_YES; }明天有时间补上,
现在,马上写如何调试。
先到这。