问题标签 [strace]
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.
c - ptrace(PTRACE_PEEKUSER) 和 ptrace(PTRACE_PEEKDATA) 之间的区别?
在发布了很多关于ptrace
(最近的 5 个问题是我的问题:()之后,我终于在更换时得到了所需的输出
和
手册页中提到的区别是这样的
PTRACE_PEEKTEXT
在孩子记忆中的位置 addr 读取一个单词PTRACE_PEEKUSER
在孩子的 USER 区域中的 offset addr 处读取一个单词
我无法单独从手册页中理解这种差异。任何人都可以在这方面教育我更多吗?
windows - 如何在 Windows 上记录程序的 DeviceIoControl 调用
我需要捕获应用程序的 DeviceIoControl() 系统调用。在 linux 上,可以使用 strace 来分析所有 ioctl 调用。windows上有类似的功能吗?
MSDN 网站推荐了一个名为“Process Monitor”的程序来分析可执行文件的实时活动。但是,“进程监视器”没有显示任何有关 DeviceIoControl 调用的信息。
linux - 如何找到我的程序的系统调用的位置?
来自 strace 手册:
我跟踪我的程序:
结果我得到了很多系统调用。其中之一:
但是在这个 prog 地址的反汇编指令不会调用任何系统调用(hte 编辑器):
怎么了?如何找到我的程序的系统调用的位置?
我的设备的 PS 架构不支持 GDB 命令 catch 系统调用。
c - ptrace 是在用户级别还是内核级别工作?
我正在尝试使用 ptrace 实现数据流异常检测。经过一番研究,我实现了一个类似于 strace 的程序。现在,我对此感到困惑,这是 wiki 告诉我的关于系统调用的内容:
“系统调用提供进程和操作系统之间的接口”
当我使用 ptrace 修改进程的内存时,我是在用户空间还是内核空间上工作?我真的很困惑。
c - 捕获 execve 系统调用的参数
我正在尝试使用 ptrace 并捕获传递给 execve 系统调用的参数。但是当我使用PTRACE_GETREGS
并尝试获取参数SYS_execve
时,所有寄存器值都为 0。你能告诉我 strace 如何让我获得所有通过的参数吗?我尝试阅读它的源代码,但他们显然使用了一些我没有完全使用它的结构。有没有更简单的方法??
c - 为什么 strace 遵循不同的执行流程?
我指的是以下文章学习符号链接攻击:
现在,当程序休眠时,我rm
将 arg[1](使用另一个终端)作为文件名,然后为同一个文件创建一个符号链接。当我按照文章中所说的那样执行时,我正在写入链接指向的文件。
然后我使用 strace 传递了相同的参数,它给了我“无法打开”,这意味着我无权访问作为 arg[1] 传递的文件。但是当我正常执行时情况并非如此 strace 是如何检测到这个的?任何帮助都是非常有价值的。
我正在使用 ptrace 编写自己的应用程序来检测此类攻击。我尝试使用 inode 编号来检测这一点,但我的应用程序仍在引用我正在传递的文件的 inode 编号。
linux - Strace 多线程程序
在多线程程序上运行 strace 时,我得到如下结果:
请注意,参数在一行中,<unfinished...>
而结果在另一行中<...resumed>
。没有与结果相关的参数会降低 strace 的效用。跟踪多线程程序时,是否可以让 strace 在同一行打印结果和参数?
python - Python多处理+ scipy:过多的文件系统'stat'和'open'尝试
我在 Python 中观察到一些极端奇怪的行为。考虑以下代码:
当我对此运行 strace -f 时,我从循环中得到以下段:
关于在文件系统中搜索“随机”的所有垃圾是怎么回事?我真的想避免这种情况,因为我在集群上并行运行了很多具有这种结构的进程,并且循环非常快,并且这种文件系统活动阻塞了文件系统元数据服务器,或者集群管理员告诉我.
如果我删除“import scipy”命令,那么这个问题就会消失:
但我需要在我的真实代码中使用 scipy,所以我不能只是摆脱它。或者也许我可以,但那会很痛苦。
有谁知道我为什么会看到这种行为?如果它是某些版本的怪癖,我正在运行以下命令:
python:2.7.1,多处理:0.70a1,scipy:0.9.0,
实际上,因为我刚刚意识到它可能取决于系统,所以我在笔记本电脑上运行了相同的代码并且没有问题(即输出相当于第二种情况)。在我正在运行的笔记本电脑上
python:2.6.5,多处理:0.70a1,scipy:0.10.0,
也许这是已修复的早期版本的 scipy 中的问题或错误?我对这样的任何东西的搜索都没有出现。即使这是问题所在,在集群上更改 scipy 的版本也不是那么容易,尽管如果需要,我可能可以让集群管理员构建更新的版本。
这可能是问题吗?
linux - wget 的 strace 给出了奇怪的套接字调用
“strace wget grooveshark.com”以错误的字符串长度停止奇怪的套接字调用,我必须按 Ctrl+C 来终止。
write(2, "HTTP request sent, awaiting resp"..., 40HTTP request sent, awaiting response...) = 40
应该
write(2, "HTTP 请求已发送,等待响应...", 40 ) = 40
但是 strace wget google.com 给出了
并正确终止。
谢谢
c - 解释 strace 输出
使用 strace 可以查看特定文件描述符和特定命令的 ioctl 调用。第三个参数是一个结构,但 strace 将其显示为指向内存的原始指针。strace 输出示例:
有没有办法(strace 选项或其他工具)来查看结构是什么,或者至少是原始指针后面的值?