使用: 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的意思是线程号,但是当我运行一个更大的程序时,我得到了跟踪,其中的输入和离开有不同的cpu_ids,这就是为什么我在寻找获取跟踪threadIds的方法。
发布于 2021-12-07 14:00:29
来自LTTing docs 向通道的事件记录中添加要记录的上下文字段
跟踪文件中的事件记录字段提供有关先前发出的事件的重要信息,但有时某些外部上下文可能会帮助您更快地解决问题。 上下文字段的示例如下:
然后采取以下后续行动:
示例:添加要记录到特定通道的事件记录的上下文字段。下面的命令行将线程标识符和用户调用堆栈上下文字段添加到当前记录会话的名为my-channel的Linux内核通道中。
lttng add-context --kernel --channel=my-channel \
--type=tid --type=callstack-user因此,如果将--type=tid添加到通道中,则应该获得线程id。(编辑以包括评论信息):
lttng enable-channel --userspace DotNetCoreChannel
lttng add-context --userspace --channel=DotNetCoreChannel --type=vtidhttps://stackoverflow.com/questions/70258400
复制相似问题