如何从 C# 调用 mono_threads_request_thread_dump()?
How to call mono_threads_request_thread_dump() from C#?
我想用堆栈跟踪转储所有线程,内部函数 mono_threads_request_thread_dump()
执行此操作,我可以从 gdb 调用它,我可以从 mono/linux 上的 C# 代码调用它吗?
函数在 threads.h
文件中
https://github.com/corngood/mono/blob/master/mono/metadata/threads.h
使用 __Internal
的 DllImport 调用主机内的本机方法。
示例:
[DllImport("__Internal")]
public static extern void mono_threads_request_thread_dump();
public static void Main(string[] args)
{
mono_threads_request_thread_dump();
Console.WriteLine("Hello World!");
}
输出:
Full thread dump:
"<unnamed thread>" at <unknown> <0xffffffff>
at Console_ThreadDump.MainClass.Main (string[]) [0x00007] in /Volumes/Code/code/Projects/Console_ThreadDump/Console_ThreadDump/Program.cs:14
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) [0x00051] in <e3877a65d90742cebc8141de4055f006>:0
"Debugger agent"
"Finalizer"Hello World!
Press any key to continue...
我想用堆栈跟踪转储所有线程,内部函数 mono_threads_request_thread_dump()
执行此操作,我可以从 gdb 调用它,我可以从 mono/linux 上的 C# 代码调用它吗?
函数在 threads.h
文件中
https://github.com/corngood/mono/blob/master/mono/metadata/threads.h
使用 __Internal
的 DllImport 调用主机内的本机方法。
示例:
[DllImport("__Internal")]
public static extern void mono_threads_request_thread_dump();
public static void Main(string[] args)
{
mono_threads_request_thread_dump();
Console.WriteLine("Hello World!");
}
输出:
Full thread dump:
"<unnamed thread>" at <unknown> <0xffffffff>
at Console_ThreadDump.MainClass.Main (string[]) [0x00007] in /Volumes/Code/code/Projects/Console_ThreadDump/Console_ThreadDump/Program.cs:14
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) [0x00051] in <e3877a65d90742cebc8141de4055f006>:0
"Debugger agent"
"Finalizer"Hello World!
Press any key to continue...