<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>昨日情怀</title>
	<link>http://www.jimaxsoft.net/wordpress</link>
	<description>弃我去者，昨日之日不可留</description>
	<pubDate>Wed, 01 Dec 2010 01:11:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>中文版Visual Studio下调试Brew MP程序的方法</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=282</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=282#comments</comments>
		<pubDate>Wed, 01 Dec 2010 01:11:29 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=282</guid>
		<description><![CDATA[装了Brew MP的开发环境，但调试不行，按BMP工具栏上的&#8221;Debug&#8221;图标，会出&#8221;无效的索引&#8221;对话框，按F5会让你选择调试程序，设为BMP的模拟器，倒是可以起来，但加不上断点。问了同事，说是中文版Visual Studio的问题，换了英文版就行了。可我不想那么麻烦地再重新卸载安装。网上搜来搜去，也都是这么说的。只好自己琢磨了。
其实Brew程序在模拟器下调试也就是调试一个DLL，没什么理由不行的。于是把Brew MP的模拟器运行起来，用附加进程的方式将调试器附加到Simulator.exe，发现还是加不上断点。用ProcessExplorer查看，发现Simulator.exe并没有调用要调试的BMP app的DLL，而是另一个进程SimTargetExecutor调用了DLL。将调试器附加到这个进程，还是不行。最后在附加进程对话框中找到一个选择代码类型的选项，设为&#8221;本机+托管&#8221;，而非缺省的&#8221;自动&#8221;，居然OK了。想来应该是这个SimTargetExecutor是个.NET的托管程序，而我们的dll是个native的程序，因此缺省&#8221;自动确定&#8221;的话，会当成调试托管程序，native程序的断点就打不上。
这样就好办了，把解决方案的属性中的&#8221;调试&#8221;中，&#8221;命令&#8221;设为&#8221;SimTargetExecutor.exe&#8221;，&#8221;调试器类型&#8221;设为&#8221;混合&#8221;，&#8221;附加&#8221;设为&#8221;是&#8221;，按F5即可启动模拟器并调试，加断点什么的都没问题。唯一的缺点是它不会自动启动我们的BMP app，得退到AppManager中，再选择我们的app启动。当然提前加上断点时，由于dll尚未载入，因此是个带问号的无效断点样式，只要app启动起来，就可以了。
]]></description>
			<content:encoded><![CDATA[<p>装了Brew MP的开发环境，但调试不行，按BMP工具栏上的&#8221;Debug&#8221;图标，会出&#8221;无效的索引&#8221;对话框，按F5会让你选择调试程序，设为BMP的模拟器，倒是可以起来，但加不上断点。问了同事，说是中文版Visual Studio的问题，换了英文版就行了。可我不想那么麻烦地再重新卸载安装。网上搜来搜去，也都是这么说的。只好自己琢磨了。</p>
<p>其实Brew程序在模拟器下调试也就是调试一个DLL，没什么理由不行的。于是把Brew MP的模拟器运行起来，用附加进程的方式将调试器附加到Simulator.exe，发现还是加不上断点。用ProcessExplorer查看，发现Simulator.exe并没有调用要调试的BMP app的DLL，而是另一个进程SimTargetExecutor调用了DLL。将调试器附加到这个进程，还是不行。最后在附加进程对话框中找到一个选择代码类型的选项，设为&#8221;本机+托管&#8221;，而非缺省的&#8221;自动&#8221;，居然OK了。想来应该是这个SimTargetExecutor是个.NET的托管程序，而我们的dll是个native的程序，因此缺省&#8221;自动确定&#8221;的话，会当成调试托管程序，native程序的断点就打不上。</p>
<p>这样就好办了，把解决方案的属性中的&#8221;调试&#8221;中，&#8221;命令&#8221;设为&#8221;SimTargetExecutor.exe&#8221;，&#8221;调试器类型&#8221;设为&#8221;混合&#8221;，&#8221;附加&#8221;设为&#8221;是&#8221;，按F5即可启动模拟器并调试，加断点什么的都没问题。唯一的缺点是它不会自动启动我们的BMP app，得退到AppManager中，再选择我们的app启动。当然提前加上断点时，由于dll尚未载入，因此是个带问号的无效断点样式，只要app启动起来，就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=282</wfw:commentRss>
		</item>
		<item>
		<title>Powershell创建目录+更改文件名</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=280</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=280#comments</comments>
		<pubDate>Wed, 13 Oct 2010 08:24:46 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=280</guid>
		<description><![CDATA[要将一堆1001.png, 1002.png变成1001目录下的icon.png, 1002目录下的icon.png，写了个Powershell脚本，先创建子目录，再将文件移动过去
ls *.png &#124; 
% { 
&#160;&#160; &#160;if($_.fullname -match &#34;([\d]+)\.png&#34;) { 
&#160;&#160; &#160; &#160;echo $($($matches[1])) 
&#160;&#160; &#160; &#160;New-Item -Path $($($matches[1])) -ItemType Directory -Force 
&#160;&#160; &#160; &#160;Move-Item -Path $_.fullname -Destination &#34;$($($matches[1]))\icon.png&#34; -PassThru -Force
&#160;&#160; &#160;} 
&#160; }
]]></description>
			<content:encoded><![CDATA[<p>要将一堆1001.png, 1002.png变成1001目录下的icon.png, 1002目录下的icon.png，写了个Powershell脚本，先创建子目录，再将文件移动过去</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">ls *.png | </li>
<li>% { </li>
<li>&nbsp;&nbsp; &nbsp;if($_.fullname -match &quot;([\d]+)\.png&quot;) { </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;echo $($($matches[1])) </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;New-Item -Path $($($matches[1])) -ItemType Directory -Force </li>
<li>&nbsp;&nbsp; &nbsp; &nbsp;Move-Item -Path $_.fullname -Destination &quot;$($($matches[1]))\icon.png&quot; -PassThru -Force</li>
<li>&nbsp;&nbsp; &nbsp;} </li>
<li>&nbsp; }</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=280</wfw:commentRss>
		</item>
		<item>
		<title>将笑笑的博客迁到这里了</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=279</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=279#comments</comments>
		<pubDate>Wed, 06 Oct 2010 04:44:39 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=279</guid>
		<description><![CDATA[前一阵子听说MSN要关闭Live Spaces, 就一直想着笑笑原来的博客是http://xinyixiaoxiao.spaces.live.com, 虽然好久没写了，但是原来的东西不能丢了。今天想做一做，上去一看，发现已经太长时间不登陆，原来的Live ID已经作废了，也就是说我进不去了。一下子有些懵，这下还能恢复吗？下决心如果没有办法的话，就再做一次当年把自己的博客转到这里时的精神，每篇文章再重新&#8221;拷贝+粘贴&#8221;一次。
话说在网上找了半天，一些搬家服务也试了试，都不行。最后找到了http://lipeng.de/blog/apple/347/，主要还是weiwei大侠写的 live-space-mover，一个Python写的脚本。运行中间断了一次，还以为又有什么问题，后来发现是原来的网站就不通了（你说Microsoft的这玩意怎么这么不稳定啊）。还好live-space-mover有cache，过了一阵子看网站恢复了，再运行，这下出现 出现 Finished! Congratulations!了，生成了一个xml文件。
然后回这里的管理界面，选择导入Wordpress, 选择生成的xml文件，选择作者名（或者新创建一个），然后就OK啦。
最后一篇日志是 2009年2月的  自从回捷通上班以来，确实很多事情都落下了。包括现在也不上MSN，也不上QQ了。生活在继续，可不停在变幻。
这个假期的后几天着实做了几件遗留已久的事。Apple Deveoper ID试通了，把HTC Desire刷到了Android 2.2，把笑笑的博客迁过来了。还有一件事，dreamhost上的ssh似乎不能用了，因此好几天都没法翻墙了。好像dreamhost发过一封信，还得再查查。
]]></description>
			<content:encoded><![CDATA[<p>前一阵子听说MSN要关闭Live Spaces, 就一直想着笑笑原来的博客是<a href="http://xinyixiaoxiao.spaces.live.com">http://xinyixiaoxiao.spaces.live.com</a>, 虽然好久没写了，但是原来的东西不能丢了。今天想做一做，上去一看，发现已经太长时间不登陆，原来的Live ID已经作废了，也就是说我进不去了。一下子有些懵，这下还能恢复吗？下决心如果没有办法的话，就再做一次当年把自己的博客转到这里时的精神，每篇文章再重新&#8221;拷贝+粘贴&#8221;一次。</p>
<p>话说在网上找了半天，一些搬家服务也试了试，都不行。最后找到了<a href="http://lipeng.de/blog/apple/347/">http://lipeng.de/blog/apple/347/</a>，主要还是weiwei大侠写的 <a href="http://code.google.com/p/live-space-mover/">live-space-mover</a>，一个Python写的脚本。运行中间断了一次，还以为又有什么问题，后来发现是原来的网站就不通了（你说Microsoft的这玩意怎么这么不稳定啊）。还好live-space-mover有cache，过了一阵子看网站恢复了，再运行，这下出现 出现 Finished! Congratulations!了，生成了一个xml文件。</p>
<p>然后回这里的管理界面，选择导入Wordpress, 选择生成的xml文件，选择作者名（或者新创建一个），然后就OK啦。</p>
<p>最后一篇日志是 2009年2月的 <img src='http://www.jimaxsoft.net/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> 自从回捷通上班以来，确实很多事情都落下了。包括现在也不上MSN，也不上QQ了。生活在继续，可不停在变幻。</p>
<p>这个假期的后几天着实做了几件遗留已久的事。Apple Deveoper ID试通了，把HTC Desire刷到了Android 2.2，把笑笑的博客迁过来了。还有一件事，dreamhost上的ssh似乎不能用了，因此好几天都没法翻墙了。好像dreamhost发过一封信，还得再查查。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=279</wfw:commentRss>
		</item>
		<item>
		<title>mac上的谷歌输入法</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=87</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=87#comments</comments>
		<pubDate>Tue, 05 Oct 2010 15:42:00 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=87</guid>
		<description><![CDATA[下载了mac上的谷歌输入法, 还凑合. http://marc.f2e.org/Google Pinyin.pkg.zip
]]></description>
			<content:encoded><![CDATA[<p>下载了mac上的谷歌输入法, 还凑合. <a href="http://marc.f2e.org/Google Pinyin.pkg.zip">http://marc.f2e.org/Google Pinyin.pkg.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=87</wfw:commentRss>
		</item>
		<item>
		<title>升级HTC Desire到Android 2.2</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=86</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=86#comments</comments>
		<pubDate>Tue, 05 Oct 2010 15:36:29 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=86</guid>
		<description><![CDATA[按照http://itbbs.pconline.com.cn/mobile/11798922.html的步骤，更新我的HTC Desire到Android 2.2. 终于摆脱可恶的古兰经了。据说也可以安装程序到sd卡了,试试看.
]]></description>
			<content:encoded><![CDATA[<p>按照<a href="http://itbbs.pconline.com.cn/mobile/11798922.html">http://itbbs.pconline.com.cn/mobile/11798922.html</a>的步骤，更新我的HTC Desire到Android 2.2. 终于摆脱可恶的古兰经了。据说也可以安装程序到sd卡了,试试看.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=86</wfw:commentRss>
		</item>
		<item>
		<title>MacBook  下安装Win7 ghost版和VMware</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=85</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=85#comments</comments>
		<pubDate>Fri, 03 Sep 2010 16:46:16 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=85</guid>
		<description><![CDATA[买了一台MacBook Pro 372，作为给自己的生日礼物吧。
买的时候让店里的人给装了个BootCamp的XP，回来还是想试试装Win7，但我的Win7是个ghost版的，于是试啊试的，终于被安装上了。
1 在Mac里面启动BootCamp助理，开始安装。
2 用光盘启动后，执行里面的ghost，复制分区到Windows分区。
3 复制完成后，直接想启动Windows分区，是无法启动的。原因应该是启动缺省用的是分区1，但在BootCamp里面，Windows分区是分区3。
4 仍然用光盘启动，进入WinPE，进行分区表修复
5 这时候再启动Windows分区就能启动了
6 插入MacOS的光盘，安装驱动程序。
这时候，盗版Win7里面自带的一个激活工具也无法使用了，它好象也是要修改grldr, 又会把分区改掉。找了半天，找到一个OEM激活的，发现能用。
然后回到MacOS里面，安装VMware Fusion, 选择建立BootCamp的虚拟机。再用Spaces把启动的Windows虚拟机搞到新的桌面上，很爽～～
]]></description>
			<content:encoded><![CDATA[<p>买了一台MacBook Pro 372，作为给自己的生日礼物吧。</p>
<p>买的时候让店里的人给装了个BootCamp的XP，回来还是想试试装Win7，但我的Win7是个ghost版的，于是试啊试的，终于被安装上了。</p>
<p>1 在Mac里面启动BootCamp助理，开始安装。<br/><br />
2 用光盘启动后，执行里面的ghost，复制分区到Windows分区。<br/><br />
3 复制完成后，直接想启动Windows分区，是无法启动的。原因应该是启动缺省用的是分区1，但在BootCamp里面，Windows分区是分区3。<br/><br />
4 仍然用光盘启动，进入WinPE，进行分区表修复<br/><br />
5 这时候再启动Windows分区就能启动了<br/><br />
6 插入MacOS的光盘，安装驱动程序。<br/></p>
<p>这时候，盗版Win7里面自带的一个激活工具也无法使用了，它好象也是要修改grldr, 又会把分区改掉。找了半天，找到一个OEM激活的，发现能用。</p>
<p>然后回到MacOS里面，安装VMware Fusion, 选择建立BootCamp的虚拟机。再用Spaces把启动的Windows虚拟机搞到新的桌面上，很爽～～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
		<item>
		<title>第一次应用Powershell</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=83</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=83#comments</comments>
		<pubDate>Wed, 01 Sep 2010 03:29:17 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=83</guid>
		<description><![CDATA[在日志中要统计一下收到多少次短信，试了试PowshellShell, 确实比较方便

Select-String e:\temp\logger\*.log -pattern &#34;收到的短信&#34; -Encoding &#34;Default&#34; &#124; Measure-Object

日志是用GB码的，所以要带上 -Encoding &#8220;Default&#8221;
结果是：

Count    : 2947
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

]]></description>
			<content:encoded><![CDATA[<p>在日志中要统计一下收到多少次短信，试了试PowshellShell, 确实比较方便</p>
<p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">Select-String e:\temp\logger\*.log -pattern &quot;收到的短信&quot; -Encoding &quot;Default&quot; | Measure-Object</li></ol></div>
</p>
<p>日志是用GB码的，所以要带上 -Encoding &#8220;Default&#8221;</p>
<p>结果是：</p>
<pre>
Count    : 2947
Average  :
Sum      :
Maximum  :
Minimum  :
Property :
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=83</wfw:commentRss>
		</item>
		<item>
		<title>一个网站崩溃问题的解决方法之总结</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=82</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=82#comments</comments>
		<pubDate>Fri, 20 Aug 2010 03:12:16 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[程序语言]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=82</guid>
		<description><![CDATA[问题
公司的网站（ASP .NET MVC的架构) 频繁重启，甚至超过进程池的快速失败保护，导致Service Unavailable。
在自己的日志里，只有重启的记录，没法查到哪里出的错。看IIS日志，也没看出什么来。
事件查看器里面，重启的时候有下面的描述:
EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 system.data.linq, P5 3.5.0.0, P6 488ef99a, P7 92c, P8 0, P9 system.stackoverflowexception, P10 NIL.
可以看出来，是某个地方stack overflow了，但具体是哪里，事件查看器也没有记录堆栈信息（是不是因为太大了，无法记录？）
抓dump文件
希望出异常时能够将堆栈转储出来。原来做C++的时候，比较清楚注册表里AeDebug (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\AeDebug) 的设置，看了看是vsjitdebugger.exe，这是因为这台机器上最早装过vs 2005。可是这个vsjitdebugger是弹出提示的，并没有转储信息。
删除之，用drwtsn32 -i，注册了dr. watson，以前都是用这个转储的。但发现崩溃后，并没有转储东西。搜了搜，发现这个只是用来处理非托管代码的(比如C++)，而托管代码需要再另一个注册表项里面: HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting和DbgManagedDebugger。
看了看这两个设置: DbgJITDebugLaunchSetting = 0&#215;10, DbgManagedDebugger = vsjitdebugger.exe。看了下进程管理器中，居然有了300多个vsjitdebugger.exe进程。把vsjitdebugger.exe进程全部杀掉，注册表里面的DbgManagedDebugger也给干掉了。
这时候，崩溃时不会再出vsjitdebugger.exe进程了。但事件管理器中会出现新的错误：
事件 ID ( 0 )的描述(在资源( .NET Runtime )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述；查看帮助和支持以了解详细信息。下列信息是事件的一部分: .NET Runtime version [...]]]></description>
			<content:encoded><![CDATA[<p style="font-size: 1.5em">问题</p>
<p>公司的网站（ASP .NET MVC的架构) 频繁重启，甚至超过进程池的快速失败保护，导致Service Unavailable。</p>
<p>在自己的日志里，只有重启的记录，没法查到哪里出的错。看IIS日志，也没看出什么来。</p>
<p>事件查看器里面，重启的时候有下面的描述:</p>
<p style="font-family:monospace;color:blue">EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 system.data.linq, P5 3.5.0.0, P6 488ef99a, P7 92c, P8 0, P9 <span style="color:red">system.stackoverflowexception</span>, P10 NIL.</p>
<p>可以看出来，是某个地方stack overflow了，但具体是哪里，事件查看器也没有记录堆栈信息（是不是因为太大了，无法记录？）</p>
<p style="font-size: 1.5em">抓dump文件</p>
<p>希望出异常时能够将堆栈转储出来。原来做C++的时候，比较清楚注册表里AeDebug (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\AeDebug) 的设置，看了看是vsjitdebugger.exe，这是因为这台机器上最早装过vs 2005。可是这个vsjitdebugger是弹出提示的，并没有转储信息。</p>
<p>删除之，用drwtsn32 -i，注册了dr. watson，以前都是用这个转储的。但发现崩溃后，并没有转储东西。搜了搜，发现这个只是用来处理非托管代码的(比如C++)，而托管代码需要再另一个注册表项里面: HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting和DbgManagedDebugger。</p>
<p>看了看这两个设置: DbgJITDebugLaunchSetting = 0&#215;10, DbgManagedDebugger = vsjitdebugger.exe。看了下进程管理器中，居然有了300多个vsjitdebugger.exe进程。把vsjitdebugger.exe进程全部杀掉，注册表里面的DbgManagedDebugger也给干掉了。</p>
<p>这时候，崩溃时不会再出vsjitdebugger.exe进程了。但事件管理器中会出现新的错误：</p>
<p style="font-family:monospace;color:blue">事件 ID ( 0 )的描述(在资源( .NET Runtime )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述；查看帮助和支持以了解详细信息。下列信息是事件的一部分: .NET Runtime version : 2.0.50727.3603 - 未找到调试器。未指定注册的 JIT 调试程序。 单击&#8221;重试&#8221;使进程处于等待状态，此时可手动附加调试器。 单击&#8221;取消&#8221;可中止 JIT 调试请求。</p>
<p>这个无所谓，找不到DbgManagedDebugger了嘛，把DbgJITDebugLaunchSetting 改个其它值也就行了。可是我想转储啊，这里有什么可以转储了。</p>
<p>主角出现：下载Debugging Tools For Windows. 安装。然后将jitdebugger设为cdb.exe （其实这里只需要托管代码的，AeDebug只是顺手），将错误转储到c:\crash_dumps下。运行下面的reg文件即可：</p>
<p style="font-family:monospace;color:blue">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework] <br/>&#8220;DbgManagedDebugger&#8221;=&#8221;\&#8221;c:\\debuggers\\x86\\cdb.exe\&#8221; -pv -p %ld -c \&#8221;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&#8221;" <br/>&#8220;DbgJITDebugLaunchSetting&#8221;=dword:00000002 <br/>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug] <br/>&#8220;Debugger&#8221;=&#8221;\&#8221;c:\\debuggers\\x86\\cdb.exe\&#8221; -pv -p %ld -c \&#8221;.dump /u /ma c:\\crash_dumps\\crash.dmp;.kill;qd\&#8221;" &#8220;Auto&#8221;=&#8221;1&#8243;</p>
<p>如果是64位机器呢，则上面是x64目录下的cdb，再将[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]和[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]下面的相应项设为x86的。</p>
<p>好了，抓到dump文件了。</p>
<p style="font-size: 1.5em">查看dump文件</p>
<p>用windbg来打开。记住先设置好Symbol File的目录: D:\TXWap_Work\www\TXWap\bin; c:\symbols; srv*c:\symbols*http://msdl.microsoft.com/download/symbols</p>
<p>前面的是自己本地的工作目录，下面有自己DLL相应的pdb。而后面的是说系统没有的话，到某个网站去下载符号文件。</p>
<p>然后再windbg中打开dump文件。</p>
<p>在windbg中要调试托管代码，需要加载一个调试器扩展SOS(Son of Strike)，这个工具在Debugging Tools For Windows里面就有了。因此只要下面这样加载SOS.dll：</p>
<p style="font-family: monospace;color:blue">.loadby sos mscorwks</p>
<p>然后看所有的线程：</p>
<p style="font-family: monospace;color:blue">!threads</p>
<pre style="font-family: monospace;color:blue">
PreEmptive GC Alloc Lock
   ID OSID ThreadOBJ State GC Context Domain Count APT Exception
   20 1 3210 000dc110 1808220 Enabled 00000000:00000000 00105678 1 MTA (Threadpool Worker)
   31 2 4430 000e9fa0 b220 Enabled 04d9213c:04d93f5c 000ccbc0 0 MTA (Finalizer)
   32 3 3190 00100d48 80a220 Enabled 00000000:00000000 000ccbc0 0 MTA (Threadpool Completion Port)
   33 4 fc4 00102f00 180b220 Enabled 00000000:00000000 00105678 1 MTA (Threadpool Worker)
   34 5 15a4 00104c60 1220 Enabled 00000000:00000000 000ccbc0 0 Ukn
   35 6 30dc 001178f0 180b220 Enabled 0d303d20:0d304e60 00105678 1 MTA (Threadpool Worker)
   36 7 466c 00130a30 180b220 Disabled 0d313ac8:0d314e68 00105678 1 MTA (Threadpool Worker)
   21 8 f64 00151d08 180a220 Disabled 0335d2cc:0335da50 00105678 1 MTA (Threadpool Worker)
   <span style="color:red">39 9 3010 1b2d5070 180b220 Enabled 093004c4:0930057c 00105678 1 MTA (Threadpool Worker) System.StackOverflowException (0ecf00a4)</span>
   41 a 28f0 1b2e2778 180b220 Disabled 11414e0c:11415924 00105678 1 MTA (Threadpool Worker)
   42 b 2174 1b2e2b70 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   43 c 35f4 1b2e3478 180b220 Enabled 11124dd8:111254d8 00105678 1 MTA (Threadpool Worker)
   44 d 1b98 1b2e40e8 180b220 Enabled 032e0e28:032e1a50 00105678 1 MTA (Threadpool Worker)
   45 e c98 1b2e4ac8 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   46 f 23e4 1b2e5608 180b220 Disabled 09300c70:0930257c 00105678 1 MTA (Threadpool Worker)
   47 10 2764 1b2e6148 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   48 11 2318 1b2e6c88 180b220 Disabled 0b3e4124:0b3e5dc8 00105678 1 MTA (Threadpool Worker)
   49 12 1cbc 1b2e77c8 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   50 13 560 1b2e8338 180b220 Enabled 0b3707ac:0b3719d0 00105678 1 MTA (Threadpool Worker)
   51 14 45c0 1b2e8ea8 180b220 Enabled 0917eacc:0918057c 00105678 1 MTA (Threadpool Worker)
   52 15 28e4 1b2e9a90 180b220 Enabled 07281228:07283190 00105678 1 MTA (Threadpool Worker)
   18 16 17a0 1b2d7fc0 180a220 Enabled 00000000:00000000 000ccbc0 0 MTA (Threadpool Worker)
   53 17 2f94 1b383e38 380b220 Enabled 00000000:00000000 00105678 0 MTA (Threadpool Worker)
   XXXX 18 9c8 1e853958 80010220 Enabled 00000000:00000000 000ccbc0 0 Ukn
</pre>
<p>看到了哪个线程有异常了吗？切换到39线程:</p>
<p style="font-family: monospace;color:blue">~39s</p>
<p>看堆栈:</p>
<p style="font-family: monospace;color:blue">!clrstack</p>
<p>可以看到堆栈列表。定位到是我们哪个函数出的问题，后面的事情就好办了 <img src='http://www.jimaxsoft.net/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=82</wfw:commentRss>
		</item>
		<item>
		<title>入手一部HTC Desire G7</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=81</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=81#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:09:57 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=81</guid>
		<description><![CDATA[用起来还是挺爽的。有点小遗憾就是是个阿拉伯版的，有些预装程序还删不掉，看着《古兰经》什么的怪怪的，啥时候刷掉它。
]]></description>
			<content:encoded><![CDATA[<p>用起来还是挺爽的。有点小遗憾就是是个阿拉伯版的，有些预装程序还删不掉，看着《古兰经》什么的怪怪的，啥时候刷掉它。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=81</wfw:commentRss>
		</item>
		<item>
		<title>新的在面前</title>
		<link>http://www.jimaxsoft.net/wordpress/?p=70</link>
		<comments>http://www.jimaxsoft.net/wordpress/?p=70#comments</comments>
		<pubDate>Thu, 05 Aug 2010 05:47:55 +0000</pubDate>
		<dc:creator>jimax</dc:creator>
		
		<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.jimaxsoft.net/wordpress/?p=70</guid>
		<description><![CDATA[集中精力，新的在面前
]]></description>
			<content:encoded><![CDATA[<p>集中精力，新的在面前</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jimaxsoft.net/wordpress/?feed=rss2&amp;p=70</wfw:commentRss>
		</item>
	</channel>
</rss>

