使用:Linux/lttng/babeltrace 2 上的 .NET Core 6
我使用 lttng 来收集有关在我的程序运行时调用的函数的信息。我想了解调用了哪个线程函数。
我运行这个脚本
export COMPlus_PerfMapEnabled=1
export COMPlus_EnableEventLog=1
lttng create my-session -o ./my-trace
lttng enable-channel --userspace DotNetCoreChannel
lttng enable-event --userspace --tracepoint DotNETRuntime:EventSource --channel=DotNetCoreChannel --filter "EventSourceName=='Trace'"
lttng start
dotnet run
lttng stop
lttng view
lttng destroy my-session
并得到这样的痕迹
[22:05:00.402124499] (+?.?????????) userVM DotNETRuntime:EventSource: { cpu_id = 1 }, { EventID = 1, EventName = "Enter", EventSourceName = "Trace", Payload = "" }
[22:05:00.429636742] (+0.000147700) userVM DotNETRuntime:EventSource: { cpu_id = 1 }, { EventID = 2, EventName = "Leave", EventSourceName = "Trace", Payload = "" }
首先我认为 cpu_id 表示线程号,但是当我在更大的程序上运行时,我得到了跟踪,其中 Enter 和 Leave 具有不同的 cpu_id,这就是为什么我正在寻找在跟踪中获取 threadIds 的方法