我需要跟踪对某个特定文件执行的所有pwrite(2)调用,并打印所有要逐字节写入的缓冲区。预期的数据不是ASCII字符串格式,所以我不能使用:
printf("%s\n", copyinstr(arg1))
我了解了copyin(arg1,arg2),但是这给了我一个空白*我发现的所有例子都通过调用stringof将它转换为字符串,例如:
printf("%s\n", stringof(copyin(arg1, arg2)))
我需要的是以某种方式显示copyin'ed缓冲区中的所有字节。有什么建议吗?
谢谢你, 因索。
答案 0 :(得分:1)
好的,这是通过tracemem(buffer, size)
电话完成的。
答案 1 :(得分:1)
tracemem(address, size_t nbytes, size_t dbytes)
,其中nbytes是常数,而dbytes是动态的,并且小于nbytes。
tracemem
void tracemem(address, size_t nbytes)
void tracemem(address, size_t nbytes, size_t dbytes)
tracemem操作将D表达式作为其第一个参数, 地址,其常量为第二个参数nbytes。微量元素 将内存从addr指定的地址复制到有向 缓冲区的长度为nbytes。
如果提供第三个参数dbytes,则最多只能为dbytes 复制。 dbytes可以是可变数量,但必须小于 大于等于nbytes。这在您查看时很有用 具有已知上限的东西,但是实际的字节数 可能会有所不同。例如,考虑您要转储 以太网数据包。最大大小基于MTU,但 给定数据包中的数据量是可变的。