【IT168技术文档】
DataTable在内存中是如何存储一张表的结构的呢?如何使用Windbg直接在内存中找到一个DataTable里面的第M列第N行的值呢?这的确是一个比较有趣的问题^_^
下面的内容,主要是讲如何用windbg+sos来看看一个DataTable在内存中是如何存储的,以及寻找内存中一个DataTable特定的行列的一个单元的值是多少。同时,还有一点Windbg Script的使用。
class Program { static void Main(string[] args) { System.Data.DataTable dt = new System.Data.DataTable(); DataColumn dtC1 = new DataColumn(); dtC1.ColumnName = "Column1"; DataColumn dtC2 = new DataColumn(); dtC2.ColumnName = "Column2"; dt.Columns.Add(dtC1); dt.Columns.Add(dtC2); DataRow dr1 = dt.NewRow(); dr1["Column1"] = "aaaa"; dr1["Column2"] = "bbbb"; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["Column1"] = "cccc"; dr2["Column2"] = "dddd"; dt.Rows.Add(dr2); pause(); } public static void pause() { System.Console.ReadLine(); } }
找一个小白鼠先: