如何用 windbg 導出 C# 中的 string 內容?

咨詢區

  • driis

我在用 windbg 調試一個生產上的 程序卡死 故障 ,在線程棧上有一個 string 類型的參數相當大,我用 !dumpobj 命令不能正常顯示內容,參考如下:

0:036>?!do?00000001b30d8668
Name:?System.String
MethodTable:?0000064278436728
EEClass:?000006427803e520
Size:?5125300(0x4e34b4)?bytes(C:\WINDOWS\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
String:?<String?is?invalid?or?too?large?to?print>Fields:MT????Field???Offset?????????????????Type?VT?????Attr????????????Value?Name
000006427843d998??4000096????????8?????????System.Int32??1?instance??????????2562638?m_arrayLength
000006427843d998??4000097????????c?????????System.Int32??1?instance??????????2562637?m_stringLength
0000064278438170??4000098???????10??????????System.Char??1?instance???????????????3c?m_firstChar
0000064278436728??4000099???????20????????System.String??0???shared???????????static?Empty>>?Domain:Value??0000000000163260:000000007fff0370?00000000001a6760:000000007fff0370?<<
0000064278438020??400009a???????28????????System.Char[]??0???shared???????????static?WhitespaceChars>>?Domain:Value??0000000000163260:000000007fff0b60?00000000001a6760:000000007fff89f0?<<

請問我該如何將 string 內容導出來,如果能導出到文件中就更好了。

回答區

  • Naveen

下面是一個可以將 string 導出到 文本的腳本,你可以試試看。

$$?Dumps?the?managed?strings?to?a?file
$$?Platform?x86
$$?Usage?$$>a<"c:\temp\dumpstringtofolder.txt"?6544f9ac?5000?c:\temp\stringtest
$$?First?argument?is?the?string?method?table?pointer
$$?Second?argument?is?the?Min?size?of?the?string?that?needs?to?be?used?filter
$$?the?strings
$$?Third?is?the?path?of?the?file
.foreach?($string?{!dumpheap?-short?-mt?${$arg1}??-min?${$arg2}})
{?$$?MT????????Field??????Offset???????????????Type??VT?????Attr????Value?Name$$?65452978??40000ed????????4?????????System.Int32??1?instance????71117?m_stringLength$$?65451dc8??40000ee????????8??????????System.Char??1?instance???????3c?m_firstChar$$?6544f9ac??40000ef????????8????????System.String??0???shared???static?Empty$$?start?of?string?is?stored?in?the?8th?offset,?which?can?be?inferred?from?above$$?Size?of?the?string?which?is?stored?in?the?4th?offsetr@$t0=??poi(${$string}+4)*2.writemem?${$arg3}${$string}.txt?${$string}+8?${$string}+8+@$t0
}

接下來就可以用如下命令將其導出到 c:\temp\stringtest 文件中。

$$>a<”c:\temp\dumpstringtofolder.txt”?6544f9ac?5000?c:\temp\stringtest

需要提一下的是 C# 中的 string 內容是 unicode 格式,你用文本文件打開的時候注意改成 unicode 。

  • Brian Rasmussen

你可以用 du 命令查看內存地址的內容,格式如下:

du?<address+offset>?<end?address>

輸出內容大概如下:

00000000`132ab050??"this?is?an?extremely?long?string"
00000000`132ab090??"?of?text,?so?don't?even?bother?t"
00000000`132ab0d0??"o?try?to?dump?it?to?the?screen?-"

點評區

這是在 高級調試 中經常會遇到的問題,我個人的用法還是 .writemem startaddress L?length ?模式,這里我舉個例子:

0:000>?!do?-nofields?000001eb2a587cf8
Name:????????System.String
MethodTable:?00007ffc403d6948
EEClass:?????00007ffc3fcd50e0
Size:????????38(0x26)?bytes
File:????????C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
String:??????小容量注射液

可以看到當前內容是 小容量注射液 ,length 是 0x26 ,所以導出命令就是:

0:000>?.writemem?C:\1.txt?000001eb2a587cf8?L?0x26?
Writing?26?bytes.

可以看到已經成功寫入 26byte

d9bdfb7375f7416cfdf7c41b5e963632.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《零基礎看得懂的C語言入門教程 》——(四)C語言的基本數據類型及變量

一、學習目標 了解C語言的基本數據類型了解變量的基本概念了解變量的使用方法了解了變量的命名方法了解格式占位符了解變量的輸出 目錄 C語言真的很難嗎&#xff1f;那是你沒看這張圖&#xff0c;化整為零輕松學習C語言。 第一篇&#xff1a;&#xff08;一&#xff09;脫離…

android一句話搞定圖片加載

http://square.github.io/picasso/ Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); gradle中添加 compile com.squareup.picasso:picasso:2.5.2 轉載于:https://www.cnblogs.com/rwxwsblog/p/5467874.html

轉HTML+CSS總結/深入理解CSS盒子模型

原文地址&#xff1a;http://www.chinaz.com/design/2010/1229/151993.shtml 前言&#xff1a;前陣子在做一個項目時&#xff0c;在頁面布局方面遇到了一點小問題&#xff0c;于是上stackoverflow上求助。ifaou在幫助我解決我問題的同時&#xff0c;還推薦我閱讀一篇有關CSS盒子…

主成分分析步驟_多元分析(1)--主成分分析

主成分分析主成分分析&#xff08;PCA&#xff09;是數據降維的一種常見方法&#xff0c;其它常見的方法還有因子分析&#xff08;FA&#xff09;,獨立成分分析&#xff0c;在進行大數據處理時&#xff0c;因為數據有很多特征&#xff0c;維數過高&#xff0c;不容易進行處理且…

ArcGIS實驗教程——實驗十九:網絡分析(最短路徑實現)

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 網絡分析模塊用于實現基于網絡數據集的網絡分析功能,包括路徑分析、服務區分析、最近設施點分析、OD成本矩陣分析、多路徑配送分析、位置分配分析和高級網絡的管理與創建等。 網絡…

設計模式之策略模式和狀態模式

1 策略模式 我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法&#xff0c; 我們可以簡單理解為更加不同的策略對象&#xff0c;執行不同策略方法。 2 類圖 3 代碼實現 1&#xff09;接口&#xff1a;Strat…

期待已久的Java 9 今日發布

人們期待已久的Java SE 9.0將在2017年9月21日發布&#xff0c;它會帶來一些重要的變化。\\JDK 9的核心變化就是引入了一種新的Java編程組件&#xff0c;也就是模塊&#xff0c;按照Oracle的說法&#xff0c;它是一個可命名的、自描述的代碼和數據集合。模塊技術的核心目標是減少…

AspNetCore7.0源碼解讀之UseMiddleware

前言本文編寫時源碼參考github倉庫主分支。aspnetcore提供了Use方法供開發者自定義中間件&#xff0c;該方法接收一個委托對象&#xff0c;該委托接收一個RequestDelegate對象&#xff0c;并返回一個RequestDelegate對象&#xff0c;方法定義如下&#xff1a;IApplicationBuild…

邊工作邊刷題:70天一遍leetcode: day 11-3

Single Number I/II II的python解是網上抄的&#xff0c;其實可以AC&#xff0c;但是python不會像c/java那樣自動overflow&#xff0c;而是轉化成long。所以如果有負數的情況會得到一個巨大的正數解&#xff0c;比如 Input:[-2,-2,1,1,-3,1,-3,-3,-4,-2] Output:4294967292 Exp…

《零基礎看得懂的C語言入門教程 》——(五)C語言的變量、常量及運算

一、學習目標 了解C語言變量的其它創建方式了解C語言常量了解C語言的運算符 目錄 C語言真的很難嗎&#xff1f;那是你沒看這張圖&#xff0c;化整為零輕松學習C語言。 第一篇&#xff1a;&#xff08;一&#xff09;脫離學習誤區 第二篇&#xff1a;&#xff08;二&#xff…

實戰使用Axure設計App,使用WebStorm開發(4) – 實現頁面UI

系列文章 實戰使用Axure設計App,使用WebStorm開發(1) – 用Axure描述需求 實戰使用Axure設計App,使用WebStorm開發(2) – 創建 Ionic 項目 實戰使用Axure設計App,使用WebStorm開發(3) – 構建頁面架構 實戰使用Axure設計App,使用WebStorm開發(4) – 實現頁面UI 實戰使用Axu…

ArcGIS實驗教程——實驗二十:ArcGIS數字高程模型DEM建立

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 本實驗講述DEM的創建方法和過程。DEM的采集方法有四種:地面測量、攝影測量、空間站、地形圖數字化。 二、實驗內容 1、插值法DEM建立 2、創建TIN 3、TIN轉柵格 4、生成等高線 …

思科asa5515端口映射_Cisco ASA端口映射

SQL基礎--同義詞同義詞的概念: 同義詞是Oracle對象的別名,使用同義詞訪問相同的對象 可以為表.視圖.存儲過程.函數或另一同義詞等對象創建同義詞 方便訪問其它用戶的對象,隱藏了對象的身份 縮短對象名字的長度 同義 ...訪問本地json文件因跨域導致的問題我使用jquery的getJSON的…

英文詞頻統計預備,組合數據類型練習

實例: 下載一首英文的歌詞或文章&#xff0c;將所有,.&#xff1f;&#xff01;等替換為空格&#xff0c;將所有大寫轉換為小寫&#xff0c;統計某幾個單詞出現的次數&#xff0c;分隔出一個一個的單詞。2.列表實例&#xff1a;由字符串創建一個作業評分列表&#xff0c;做增刪…

ArcGIS實驗教程——實驗二十一:DEM分析

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 表面分析主要通過生成新數據集,如等值線、坡度、坡向、山體陰影等派生數據,獲取更多的反應原始數據集中所暗含的空間特征、空間格局等信息。 二、實驗內容 1、地形因子計算 2、填…

《零基礎看得懂的C語言入門教程 》——(六)輕輕松松了解C語言的邏輯運算

一、學習目標 了解邏輯判斷的概念了解if語句的使用方法了解switch語句的使用方法了解邏輯運算符的使用方法 目錄 C語言真的很難嗎&#xff1f;那是你沒看這張圖&#xff0c;化整為零輕松學習C語言。 第一篇&#xff1a;&#xff08;一&#xff09;脫離學習誤區 第二篇&#…

.NET 6 在 Win7 系統證書鏈錯誤導致 HttpWebRequest 內存泄露

本文記錄我將應用遷移到 dotnet 6 之后&#xff0c;在 Win7 系統上&#xff0c;因為使用 HttpWebRequest 訪問一個本地服務&#xff0c;此本地服務開啟 https 且證書鏈在此 Win7 系統上錯誤&#xff0c;導致應用內存泄露問題。本文記錄此問題的原因以及調查過程核心原因核心原因…

個人成就故事

曾經參加過文藝演出&#xff0c;并且照片上過學校的文化墻。 中專時畫的園林景觀獲過獎。 在麥當勞打工時參加過大型活動&#xff0c;并且擔任小隊副隊長。 在學校堅持鍛煉練出了一些腹肌轉載于:https://www.cnblogs.com/mokutanuki/p/5486567.html

Linux下java -version版本不對

在服務器上更新了新的 jdk&#xff0c;也在 /etc/profile 中設置了新的 JAVA_HOME&#xff0c;并且 source /etc/profile 然后使用java -version 和 javac -version 發現版本還是老版本&#xff0c;死活沒有使用我新指定的。 中間各種排查&#xff0c;這里就不廢話了&#xff0…

JAVA-JSP內置對象

相關資料&#xff1a;《21天學通Java Web開發》 request 請求對象 類型javax.servlet.ServletRequest 作用域Requestresponse 響應對象 類型javax.servlet.SrvletResponse 作用域PagepageContext 頁面上下文對象 類型 javax.servlet.jsp.PageContext 作用域Pagesession 會話對象…