使用windbg导出dump文件

.dump /ma D:\testdump.dmp

gchandles命令列出句柄,同时列出句柄引用的对象,演示代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Data;
using System.Runtime.InteropServices; public class Example
{
static void Main(string[] args)
{
int[] arry = new int[];
for (int i = ; i < ; i++)
{
arry[i] = i;
}
GCHandle h1 = GCHandle.Alloc(arry, GCHandleType.Pinned);
Console.ReadKey();
}
}

windbg附加后,运行至ReadKey处,运行GCHandles

0:000> !gchandles
          Handle Type                  Object     Size             Data Type
00000000000a13a8 Strong      00000000027f2070       64                  System.Security.PermissionSet
00000000000a13b0 Strong      00000000027f1440       48                  System.SharedStatics
00000000000a13b8 Strong      00000000027f1368      160                  System.Threading.ThreadAbortException
00000000000a13c0 Strong      00000000027f12c8      160                  System.Threading.ThreadAbortException
00000000000a13c8 Strong      00000000027f1228      160                  System.ExecutionEngineException
00000000000a13d0 Strong      00000000027f1188      160                  System.StackOverflowException
00000000000a13d8 Strong      00000000027f10e8      160                  System.OutOfMemoryException
00000000000a13e0 Strong      00000000027f1048      160                  System.Exception
00000000000a13f8 Strong      00000000027f1538      216                  System.AppDomain
00000000000a17d0 Pinned      00000000027f2ca8       64                  System.Int32[]
00000000000a17d8 Pinned      00000000127f5710    16352                  System.Object[]
00000000000a17e0 Pinned      00000000127f36f0     8192                  System.Object[]
00000000000a17e8 Pinned      00000000127f32b0     1056                  System.Object[]
00000000000a17f0 Pinned      00000000027f1408       24                  System.Object
00000000000a17f8 Pinned      00000000127f1038     8792                  System.Object[]

此时,可以看到对象是00000000027f2ca8 ,持有他的句柄是00000000000a17d0

看下句柄内容:

0:000> dd 00000000000a17d0
00000000`000a17d0  027f2ca8 00000000 127f5710 00000000
00000000`000a17e0  127f36f0 00000000 127f32b0 00000000
00000000`000a17f0  027f1408 00000000 127f1038 00000000
00000000`000a1800  00000000 00000000 00000000 00000000
00000000`000a1810  00000000 00000000 00000000 00000000
00000000`000a1820  00000000 00000000 00000000 00000000
00000000`000a1830  00000000 00000000 00000000 00000000
00000000`000a1840  00000000 00000000 00000000 00000000

句柄中的前8个字节正好是持有的对象;

补充:Pined句柄表示被固定不会被移动的对象。

windbg 命令 gchandles的更多相关文章

  1. WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  2. WinDbg 命令三部曲:(一)WinDbg 命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  3. WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  4. windbg命令学习3

    3.进程与线程: 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 3.1. 进程命令 进程命令包括以下:显示进程 ...

  5. WinDbg 命令手册

    WinDbg 命令三部曲:(一)WinDbg 命令手册   本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部 ...

  6. WinDbg命令三部曲

    WinDbg 命令三部曲:(一)WinDbg 命令手册 WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册 WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册

  7. Windbg命令脚本流程控制语句详解

    在Windbg命令脚本一文里,我们介绍了命令脚本语言的的组成要素,在本文里将对语句进行展开的讲解.这些语句主要是流程控制的语句,比如我们常见的条件分子和循环语句等. ; (命令分隔符) 分号(:)字符 ...

  8. Windbg命令脚本

    命令脚本,就是将完成某个特定任务的相关命令组合在一起,保存在脚本文件里,加载到Windbg里执行,达到我们的目的.你可以理解为脚本就是一种语言,就像c或者汇编,但是他不需要编译器将其编译为可执行文件, ...

  9. windbg命令行选项

    我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式  windbg命令行使用以下语法: windbg [ -server Serv ...

随机推荐

  1. python map函数

    map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于li ...

  2. Redis Set 命令

        1.Set set是string类型的无序集合,其参考来源应该属于STL中的Set.   •set元素最大可以包含(2的32次方-1)个元素. •set的是通过hash table实现的,ha ...

  3. ural 1273. Tie

    1273. Tie Time limit: 1.0 secondMemory limit: 64 MB The subway constructors are not angels. The work ...

  4. Count the string[HDU3336]

    Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. BZOJ2530 : [Poi2011]Party

    注意到随机一组贪心解得到的团的大小不小于$\frac{N}{3}$的概率是很大的,所以一直随机下去,直到找到一组解即可,随机次数是常数级别的,所以复杂度为$O(n^2)$. #include<c ...

  6. COJ0702 数学(三)

    数学(三) 难度级别:D: 运行时间限制:1800ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给出两个正整数a,b,求a*b. 输入 输入共两行,每行是一个正整 ...

  7. 常用正则表达式(?i)忽略字母的大小写!

    1.^/d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-/d+)|(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9 ...

  8. 使用Expression做Linq的參數化排序

    Linq非常的好用,減少大量的資料庫操作手序,使用具名的類別,減少了在程式中寫SQL寫錯字的可能性,問題來了,如果我想用QueryString中的參數,作為排序的依據,但是因為是具名的類別,不能指定字 ...

  9. Xshell选中的同时把内容复制到剪贴板(还可以设置设置文本分隔符)

    1.设置对话框 工具 -> 选项 -> 键盘和鼠标 -> 将选定的文本自动复制到剪贴板 2.贴图如下 2.1.打开设置对话框 2.2.设置键盘鼠标,左键复制 2.3.右键粘贴 作者: ...

  10. 【C语言】03-第一个C程序代码分析

    前面我们已经创建了一个C程序,接下来分析一下里面的代码. 项目结构如下: 一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下 ...