debugging - 查看/拦截所有 emacs lisp 函数调用

标签 debugging emacs read-eval-print-loop strace

我想查看在 emacs session 期间进行的所有 emacs lisp 函数调用的日志。

我想确切地知道口译员在做什么。如果有任何意义,如何“拦截”解释器的 REPL?

使用 strace,我可以附加到 emacs 进程并查看所有系统调用。但是我需要关于哪些 lisp 函数实际负责的更高级别的信息。

顺便说一句,这样做的动机是在我的 emacs session 中调试一个问题,其中 emacs 进程不断监听永远不可用的套接字:

recvfrom(4, 0xbd4754, 4096, 0, 0, 0)    = -1 EAGAIN (Resource temporarily unavailable)



# netstat -p |grep 14854
unix  3      [ ]         STREAM     CONNECTED     14854    3040/emacs         

最佳答案

你可以试试M-x profile-start RET RET ... M-x profile-report RET .它不会给你一个完整的跟踪,但它会向你显示任何持续足够时间的函数的调用树。

顺便说一句,我不知道您要跟踪什么问题。一遍又一遍地调用 recvfrom 并获得 EAGAIN 可能是完全正常的。

关于debugging - 查看/拦截所有 emacs lisp 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20309461/

相关文章:

user-interface - 在 REPL 中计算函数的结果与在程序中计算函数的结果不同

command-line - 什么程序可以帮助 REPL shell 记住和搜索历史记录?

jsp - 使用 STS 和捆绑的 vFabric tc 服务器调试 JSP

powershell - PowerShell 中的调试器语句

python - 尝试让终端在 Emacs 中工作

emacs - 如何在 emacs orgmode 和/或议程 View 中按属性值排序/搜索?

c++ - 如何同步终端上的输入和输出?

c - 释放内存时如何在 gdb 中得到通知?

go - 如何在 VS Code 中调试 Ginkgo 测试?

emacs - 在 emacs lisp 中使用侧滑手势