问题标签 [tracepoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
61 浏览

c - 启用跟踪点后无法删除内核驱动程序

我向我构建的内核模块添加了一个新的跟踪点。在 insmod 后几秒钟,我的驱动程序 refcnt 保持在 1,从这一点开始我无法卸载我的模块。

我已按照https://lwn.net/Articles/383362/上的说明进行操作。

在 Ubuntu 18.04.4 - 内核 4.15.0-rc4 上运行。

我启用了跟踪以检查正在使用我的模块的内容,并且看起来跟踪点代码 ( perf_trace_init) 正在“持有”我的模块。

知道我做错了什么吗?

代码片段:

然后在我刚刚trace_dummy_trace使用 bytes 参数调用的一个 C 源文件中。

0 投票
1 回答
406 浏览

ctypes - 进程名称(comm)作为 BPF 映射的键

我一直在尝试设计一个工具,我可以在其中进行每个进程的跟踪,但这意味着我需要为每个进程提供一个键,以便我可以为每个进程存储键值映射配对。我本能地不喜欢使用结构或字符串作为键,有一段时间我在考虑如何访问 inode 值以将它们用作键。然而,有许多使用结构或字符串作为 hashmap 键的示例,Alexei 建议通常将进程名称用作键. 也就是说,我无法让这种哈希图的基本实现工作。在 BPF 程序中,跟踪点无法找到与 process_name 键相关的值。也许我正在比较内存位置而不是预期的字符串文字?c_types 的幕后是否发生了导致键之间不匹配的事情?

0 投票
0 回答
23 浏览

python - 每当在 python 中访问变量时运行 pdb?

我正在尝试调试一些创建错误字典并返回它的代码(而不是在发生某些事情时立即返回错误)。

为此,跟踪以下内容会很有用:

  • 当访问字典中的特定键时
  • 访问此变量时。

有没有办法在发生这种情况时启动 pdb。

在其他语言中,有在访问内存时启动调试的概念,这并不真正适用于 python。

huntrace之前已经找到并用于跟踪。我认为这可以适应启动 pdb (并且有一些用于监视变量的代码)。

我破解了以下内容:

0 投票
1 回答
733 浏览

linux - 列出和使用自定义 Linux 内核跟踪点

我按照https://www.kernel.org/doc/Documentation/trace/tracepoints.txt上的教程在内核核心中创建了一个自定义跟踪点(即不在可加载模块中)。

但是,我没有看到perf listtplist(来自密件抄送工具)的输出中列出的跟踪点。

所以,我不知道如何使用跟踪点。

问题:如何使跟踪点出现在perf list/tplist输出中?

谢谢。

0 投票
1 回答
60 浏览

java - 如何在 Eclipse 中调试时将 Java 对象的当前值打印到控制台,而不是挂起线程?

有时您只需要检查应用程序中的某些值是如何随时间变化的。通常,您可以使用日志,但假设您的应用程序已经在服务器上并进行整个 CI/CD 循环,仅添加一些临时日志语句就大材小用了。或者变量在 3-rd 方库中,您不想修补它。

当然,您可以(远程)调试您的应用程序,但暂停线程并一次又一次地检查多个变量可能是个问题。

JetBrains IntelliJ IDEA 开箱即用 - tracepoint 中提供了此类功能,但是 Eclipse 呢?

0 投票
1 回答
269 浏览

linux-kernel - 在 Linux 系统调用中,系统调用完成后(在 sys_exit 跟踪点处),系统调用参数是否保存在寄存器中?

是否保证能够在跟踪点读取所有系统调用参数sys_exit

sysdig 驱动程序 是一个内核模块,用于使用内核静态跟踪点捕获系统调用。在这个项目中,一些系统调用参数是在sys_entertracepoint处读取的,而其他一些参数则是在sys_exit(当然是返回值,以及用户空间中的内容以避免页面错误)处读取的。

为什么不读取所有参数sys_exit?这是因为某些参数可能不可用sys_exit吗?

0 投票
0 回答
51 浏览

c - 在 tracepoint 中使用 printk 会导致系统死机

我在学习Linux的tracepoint相关知识,自己写了一个模块,如下图。

当我在命令行输入 insmod 命令并回车时,系统没有响应。经过多次实验,发现这个问题是在probe函数(sys_enter_probe)中写count或者使用printk的时候出现的。我对内核中的各种机制了解不多,希望有人能告诉我我的代码违反了哪些规则,以及我在哪里可以学习这些规则。

0 投票
0 回答
33 浏览

c# - VS 扩展:当 Visual Studio 中的跟踪点被命中时是否会引发事件,并且可以在继续执行之前执行堆栈分析吗?

我正在编写一个 Visual Studio 调试扩展,我正在分析堆栈中某些表达式/监视变量的值和数据类型,一旦断点被​​命中/调试器处于中断模式。我想为选定的断点实现自动继续功能,即在中断模式下查找/分析堆栈上的表达式后,调试器应该继续执行。激活此自动继续功能的断点应该以某种方式在视觉上标记。Visual Studio 具有出色的“跟踪点”功能,如果可能的话,我想利用它。所以这是我的问题:

  1. 是否有事件知道何时命中跟踪点?正常的断点事件 OnEnterBreakMode 等在这里不起作用。
  2. 在调试器继续在跟踪点执行之前,甚至可以执行/实现表达式的堆栈分析吗?
0 投票
0 回答
14 浏览

kernel - 内核中的 rwsem 是否可以在写入者持有时由读者持有?

当我使用 mmap_lock 跟踪点时,发生了一些奇怪的事情。我发现内核中的 rwsem 由读者持有,而它由作家持有。那可能吗?

跟踪点输出如下所示: 跟踪点输出

0 投票
0 回答
23 浏览

c - 使用 uprobe 提取套接字地址

我正在使用 uprobe 来跟踪连接事件,

如何从 sockaddr 结构中提取目标 IP?