如何从单声道内部打印线程堆栈

How to print thread stacks from inside mono

我在 OSX 上使用 Mono 3.2.7。我希望我的程序能够为诊断导出触发线程转储。

[DllImport("libmono", EntryPoint = "_mono_threads_request_thread_dump")]
public static extern void MonoThreadsRequestThreadDump();

调用时没有任何内容写入标准输出。

删除前导下划线会按预期在 Mono 中导致本机异常。

我哪里做错了或者实现目标的更好方法是什么?

使用 [DllImport("__Internal")] 而不是 libmono。调用此方法有效,但刷新标准输出仍然有问题。

更简单的方法是发送 SIGQUIT 信号,它会将完整的线程转储写入标准输出。