emacs
源码分析(五)
因为emacs
的C
源码中有大量的宏,在gdb
中调试是非常痛苦的,所以有下面的内容:
一个更方便的调试emacs
源码的方式
就像在“emacs
源码分析(四)”中提到的那样,要么是定义这么复杂的宏:
(gdb) macro define sym_name(lisp_obj) XSTRING(XSYMBOL(lisp_obj).u.s.name).u.s.data
(gdb) p sym_name(0xdd70)
$9 = (unsigned char *) 0x100a6c4c3 <o_fwd+15843> "top-level"
要么就是写下这么一大段gdb
命令:
(gdb) p XTYPE(XCONS(XCONS(Vtop_level).u.s.u.cdr).u.s.car)
$20 = Lisp_String
(gdb) p XSTRING(XCONS(XCONS(Vtop_level).u.s.u.cdr).u.s.car).u.s.data
$21 = (unsigned char *) 0xa000dfe08 "loadup.el"
不经意间我发现了emacs
提供了