Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从mono内部打印线程堆栈_C#_Mono_Dllimport - Fatal编程技术网

C# 如何从mono内部打印线程堆栈

C# 如何从mono内部打印线程堆栈,c#,mono,dllimport,C#,Mono,Dllimport,我在OSX上使用Mono 3.2.7。我希望我的程序能够触发诊断导出的线程转储 [DllImport("libmono", EntryPoint = "_mono_threads_request_thread_dump")] public static extern void MonoThreadsRequestThreadDump(); 调用此函数时,不会向stdout写入任何内容 删除前导下划线会导致Mono中出现预期的本机异常 我做错了什么,或者实现目标的更好方法是什么?使用[DllIm

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

[DllImport("libmono", EntryPoint = "_mono_threads_request_thread_dump")]
public static extern void MonoThreadsRequestThreadDump();
调用此函数时,不会向stdout写入任何内容

删除前导下划线会导致Mono中出现预期的本机异常

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

使用
[DllImport(“\uu Internal”)]
而不是libmono。调用此方法是可行的,但仍然存在刷新标准输出的问题


更简单的方法是发送SIGQUIT信号,它将向stdout写入完整的线程转储。

您可以发送自己的进程
SIGQUIT
信号(如上所述)。@Christian.K“您不应该期望它保持可用/稳定”是一个破坏交易的因素。是的,它会。但我不会对回答另一个问题的人有任何冒犯,我不会盲目地认为这是理所当然的。仅仅处理SIGQUIT并不是变得不稳定的理由。我会先做我自己的研究。SIGQUIT处理程序最后调用的函数似乎就是您提到的那个函数。我正尝试着做同样的事情,最好是从c#开始,但现在从gdb开始尝试。我可以得到线程的完整输出,但我必须持续刷新stdout几秒钟<代码>(gdb)调用fflush(0)