处理线程中的异常

时间:2017-01-06 09:46:21

标签: multithreading common-lisp sbcl

我的一个线程进入了调试器。我想切换到它,期待堆栈跟踪,选择重启等等......我该怎么做?

我正在使用bordeaux-threads

1 个答案:

答案 0 :(得分:5)

如果您使用SLIME,它应该自动运行。否则取决于您的实施。在SBCL中,(SB-THREAD:RELEASE-FOREGROUND)应该让另一个线程使用终端。

SBCL manual, 12.8 Sessions/Debugging

  

在单个会话中,线程在它们之间进行仲裁以引起用户的注意。线程可能处于三种概念状态之一:前景,后台或停止。当后台进程尝试打印repl提示符或进入调试器时,它将停止并打印一条消息,表明它已停止。闲暇时的用户可以切换到该线程以找出它需要什么。如果后台线程进入调试器,选择任何重启将在恢复之前将其重新放回后台。通过调用sb-thread:get-foreground(可能阻塞)和sb-thread:release-foreground来管理输入流的仲裁。