Emacs には、C で書かれた部分と、Emacs Lisp で書かれた部分があります。
Emacs Lisp の部分の挙動を観察しようと思ったら、Lisp というぐらいでとっても簡単です。たとえば、x という変数の値が知りたいなら、(message "DEBUG: x = %d" x) を追加すればいいでしょう。また、デバッガを使ってもいいですね。方法はいくらでもあります。
しかし C の部分では、Emacs のコーディング流儀を知らないと、うまくはいきません。以前、そういう流儀に詳しかったのですが、最近は忘れていて、思い出すのに時間がかかったので、忘れないように書いておきます。
(message "DEBUG: x = %d" x) と同じことをやるには、こういうコードを書き加えます。
{ Lisp_Object args[2]; args[0] = build_string("DEBUG: %d"); args[1] = make_number(x); Fmessage(2, args); }