<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 編程開發 > c#教程 >
      • C#教程之初次使用Windbg檢查C#程序內存

      • 2019-04-13 19:28 來源:未知

      1. 下載windbg并安裝。

      我下載的是 Windbg 6.12。注意,windbg分32位和64位,由分析環境的位數決定。我這里安裝的是32位的。安裝過程很簡單,一路next就可以。

      2. 準備被調試的程序。

      新建一個C#控制臺程序,使用如下代碼。編譯~

       View Code

      3. 到bin/debug目錄下,運行創建的程序

      4. 打開Windbg。

      初次使用,需要加載符號文件。選擇菜單: File - Symbol File Path,輸入:

       srv*d:\SymbolsLocal*http://msdl.microsoft.com/download/symbols

      5. 附件到進程

      選擇 File - Attach to a process,然后在彈出的窗口中選擇我們正在運行的控制臺程序

      6. 加載 sos 工具

      如下圖。然后輸入 .chain,用于確認sos.dll確實被加載。

      7. 獲得主線程上的引用

      輸入命令:  ~0s 

       

      8. 輸出主線程上的線程棧信息

      輸入命令  !clsstack -l 。可以看到,main方法有一個局部變量,地址是 0x020c2350

      9. 輸出局部變量的信息

      !dumpobj /d 0x020c2350 。如下圖

      打印出來的內容:

      Name:類名

      MethodTable:方法表地址

      Size:占用內存空間多少字節

      紅色框里,是該對象所有字段的詳細信息表格,包含每個字段的MT(方法表地址)、Offset(相對偏移量)、類型、VT(=1:值類型,=0:引用類型)、Attr(靜態的還是實例的)、字段值、字段名稱

      注意,在offset中,可以看到每個字段在內存的分布,如下圖。

       

      這么分布是為了字段對齊。即,CLR為了節省空間,各個字段在內存中,并不是按代碼定義的順序進行分布的,而是把byte字段合到一起,讓它們共同占用4個字節。int每個變量占4個字節。就形成了上圖的分布。

      10. 查看內存情況

      選擇菜單 View - Memory,在Virtual中輸入剛才變量地址,可以驗證上面所說的情況

      相關教程
      江苏快3 琼中 | 吉林 | 三亚 | 博尔塔拉 | 乌海 | 临夏 | 新疆乌鲁木齐 | 昭通 | 山南 | 义乌 | 林芝 | 台北 | 山南 | 昆山 | 清徐 | 徐州 | 寿光 | 清徐 | 库尔勒 | 改则 | 丹东 | 潜江 | 温州 | 安康 | 余姚 | 绥化 | 广西南宁 | 延安 | 梅州 | 大庆 | 泰安 | 嘉峪关 | 凉山 | 邹平 | 吉林长春 | 吉林长春 | 灌南 | 偃师 | 金坛 | 运城 | 龙口 | 天水 | 广汉 | 榆林 | 吉林 | 黄山 | 资阳 | 枣庄 | 荆门 | 马鞍山 | 博尔塔拉 | 襄阳 | 大庆 | 衡阳 | 广元 | 东莞 | 文山 | 张掖 | 灌南 | 滨州 | 丹东 | 宁夏银川 | 湖北武汉 | 宁德 | 毕节 | 澳门澳门 | 白沙 | 江门 | 新泰 | 肥城 | 宜都 | 桂林 | 崇左 | 江门 | 博罗 | 盐城 | 昭通 | 肥城 | 德清 | 云南昆明 | 神农架 | 定州 | 陕西西安 | 朔州 | 新疆乌鲁木齐 | 内江 | 宝鸡 | 玉溪 | 嘉兴 | 云南昆明 | 万宁 | 阳江 | 眉山 | 保定 | 溧阳 | 日喀则 | 晋中 | 和田 | 玉树 | 昆山 | 顺德 | 宣城 | 湖南长沙 | 抚州 | 泰安 | 沛县 | 运城 | 绍兴 | 泸州 | 淄博 | 博罗 | 济宁 | 黑河 |