在我看到这个问题并回答之前:Use WinDbg to Write Contents of Managed Byte[] to File,但我有一个问题,提到答案是将所有字节写入文件(方法表指针,数组长度和数组内容),我想要的只是将数组内容写入文件。
例如,我创建了一个长度为8192的字节数组。var bytes=new Byte[8192]
并使用windbg并将其崩溃。
0:034> !do 0x0143fd1c
Name: System.Byte[]
MethodTable: 5ce54944
EEClass: 5cb8af1c
Size: 8204(0x200c) bytes
Array: Rank 1, Number of elements 8192, Type Byte
Element Type:System.Byte
Content: .0.................:.i......$...,x"!.a_.h#......66..vx.4...P.R?...M
Fields:
None
0:034> dd 0x0143fd1c
0143fd1c 5ce54944 00002000 0a0d300a 16460a0d
0143fd2c 957bd993 1f92335c 79a2d058 72455ef6
0143fd3c cc16c7b1 05b18e14 5b1df595 0fb5dbd8
0143fd4c 629a16c6 0edb5c9a 6ede4110 5d5da54e
0143fd5c 4638143a efcad6db 060935f1 a9a48285
0143fd6c e414cff0 8aeaae92 f169b93a f80bd6de
0143fd7c 9a9824d1 22782ccd 5f610c21 0f2368b4
0143fd8c ae09d410 083636c3 0b787616 101ab234
0:034> !da 0143fd1c
Name: System.Byte[]
MethodTable: 5ce54944
EEClass: 5cb8af1c
Size: 8204(0x200c) bytes
Array: Rank 1, Number of elements 8192, Type Byte
Element Methodtable: 5ce525ec
[0] 0143fd24
[1] 0143fd25
.......
那么,如何在.writemem
命令中定位起始偏移和输出长度?谢谢。
答案 0 :(得分:12)
!da给你答案。 [0] 0143fd24< - 此处第一个字节的地址。
获取第一个字节的地址,并将其与文件名一起传递给.writemem。
.writemem C:\ somefile 143fd24 L0n8192
此命令表示写入C:\ somefile,数据从143fd24开始,继续为十进制8192字节。