首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用lttng跟踪ThreadId时获取EventSources

如何在使用lttng跟踪ThreadId时获取EventSources
EN

Stack Overflow用户
提问于 2021-12-07 10:20:26
回答 1查看 143关注 0票数 0

使用: linux / lttng / babeltrace 2上的.NET Core 6

我使用lttng收集有关程序运行时调用的函数的信息。我想了解在哪个线程函数中调用的。

我运行这个脚本

代码语言:javascript
复制
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

找到这样的痕迹

代码语言:javascript
复制
[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的方法。

EN

回答 1

Stack Overflow用户

发布于 2021-12-07 14:00:29

来自LTTing docs 向通道的事件记录中添加要记录的上下文字段

跟踪文件中的事件记录字段提供有关先前发出的事件的重要信息,但有时某些外部上下文可能会帮助您更快地解决问题。 上下文字段的示例如下:

  • LTTng发出事件的线程的进程ID、线程ID、进程名和进程优先级。

然后采取以下后续行动:

示例:添加要记录到特定通道的事件记录的上下文字段。下面的命令行将线程标识符和用户调用堆栈上下文字段添加到当前记录会话的名为my-channel的Linux内核通道中。

代码语言:javascript
复制
lttng add-context --kernel --channel=my-channel \
                  --type=tid --type=callstack-user

因此,如果将--type=tid添加到通道中,则应该获得线程id。(编辑以包括评论信息):

代码语言:javascript
复制
lttng enable-channel --userspace DotNetCoreChannel
lttng add-context --userspace --channel=DotNetCoreChannel --type=vtid
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70258400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档