2

我需要跟踪对某个特定文件所做的所有 pwrite(2) 调用并打印所有要逐字节写入的缓冲区。预期的数据不是 ASCII 字符串格式,所以我不能使用:

printf("%s\n", copyinstr(arg1))

我了解了 copyin(arg1, arg2),但这给了我一个 void* 并且我发现的所有示例都通过调用 stringof 将它再次转换为字符串,例如:

printf("%s\n", stringof(copyin(arg1, arg2)))

我需要的是以某种方式显示复制缓冲区中的所有字节。有什么建议么?

谢谢你,英索。

4

2 回答 2

1

好的,tracemem(buffer, size)通话完成。

于 2010-08-10T09:53:01.380 回答
1

tracemem(address, size_t nbytes, size_t dbytes),其中 nbytes 是一个常数,dbytes 可以是动态的并且小于 nbytes。

追踪记忆

void tracemem(address, size_t nbytes)
void tracemem(address, size_t nbytes, size_t dbytes)

tracemem 操作将 D 表达式作为其第一个参数地址,并将一个常量作为其第二个参数 nbytes。tracemem 将内存从 addr 指定的地址复制到定向缓冲区中,长度由 nbytes 指定。

如果提供了第三个参数 dbytes,则最多只能复制 dbytes。dbytes 可以是一个可变数量,但它必须小于或等于 nbytes。当您查看具有已知上限的内容时,这很有用,但实际字节数可能会有所不同。例如,考虑转储以太网数据包的情况。最大大小基于 MTU,但给定数据包中的数据量是可变的。

于 2019-02-08T04:55:55.797 回答