<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Resolving Symbols Manually on Windows CE (ADDRESS --&amp;gt; SYMBOL)</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx</link><description>You know you've been there. You are looking at a callstack, and the one function you want to know the identity of, failed to resolve symbols or has bad symbols . Dang! If only you knew what function 0x12345678 refers to, you'd find your bug. First thing's</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Resolving Symbols Manually on Windows CE (ADDRESS --&gt; SYMBOL)</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#383998</link><pubDate>Thu, 03 Mar 2005 03:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:383998</guid><dc:creator>Steve Meredith</dc:creator><description>Great couple of blog entries! &lt;br&gt; &lt;br&gt;This paragraph is a little confusing: &lt;br&gt; &lt;br&gt;“The main thing you have to be careful about is recognizing addresses that are inside process slots, and converting them to slot 0 addresses.  Address 0x09EE5678 is inside devmgr.dll, not device.exe.”&lt;br&gt; &lt;br&gt;Can you explain how you got to that conclusion?&lt;br&gt;</description></item><item><title>re: Resolving Symbols Manually on Windows CE (ADDRESS --&gt; SYMBOL)</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#384030</link><pubDate>Thu, 03 Mar 2005 04:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:384030</guid><dc:creator>Sue Loh</dc:creator><description>Good question.  The address 0x09EE5678 does fall inside the slot where device.exe is loaded, which you can tell by seeing that device.exe is loaded at 0x08000000.  However, the first clue that it's not from device.exe is that it's in the top of the slot, not the bottom.  If you remove the slot part of the address, or in CE terms if you &amp;quot;unmap&amp;quot; the address, 0x09EE5678 becomes 0x01EE5678.  EXE code &amp;amp; data loads at the bottom of the slot, while DLL code &amp;amp; data loads at the top.  So, an address like 0x08005678 is pretty much guaranteed to be inside device.exe, while an address like 0x09FF5678 is almost guaranteed to be inside a DLL that has been loaded by device.exe.  It's actually possible that both addresses are part of something else -- heap allocations, stack, virtual allocations -- but not very likely.&lt;br&gt;&lt;br&gt;So, given that, what you can do is look through the DLLs I listed and see which one is closest to the &amp;quot;unmapped&amp;quot; address, 0x01EE5678.  And guess what, I should have been working more carefully, because that's not devmgr.dll after all.  I thought it was, but I goofed because devmgr.dll loads in slot 1.  I did the math wrong.  0x01EE5678 doesn't fall inside devmgr.dll; it doesn't fall inside any of the DLLs I listed.  Using &amp;quot;Price is Right&amp;quot; matching, the closest match is kbdmouse.dll.  Except if you look at the Image Address Range that I pasted from the Modules &amp;amp; Symbols window, you can see that kbdmouse.dll doesn't go that high.&lt;br&gt;&lt;br&gt;If I was really slick, what I should have done was shown two DLLs listed for the same parts of slot 0 &amp;amp; 1.  If there was a &amp;quot;foo.dll&amp;quot; that loaded into Image Address Range 0x01EE0000-0x01EE9FFF (which I chose because it exactly matches devmgr.dll, but is in slot 0 instead of slot 1), then the example address I was using, 0x09EE5678, would fall inside foo.dll.&lt;br&gt;&lt;br&gt;Sorry about that!  Good catch!&lt;br&gt;&lt;br&gt;Sue</description></item><item><title>re: Resolving Symbols Manually on Windows CE (ADDRESS --&amp;gt; SYMBOL)</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#406120</link><pubDate>Thu, 07 Apr 2005 10:51:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:406120</guid><dc:creator>Mike Dimmick</dc:creator><description>A note for a tool I've found useful - if you don't have the .map but you _do_ have .pdbs, you can use John Robbins' CrashFinder from &lt;a rel="nofollow" target="_new" href="http://www.wintellect.com/about/instructors/robbins/code.aspx"&gt;http://www.wintellect.com/about/instructors/robbins/code.aspx&lt;/a&gt; to find the function, and if you have full symbols (rather than stripped) the source line as well.&lt;br&gt;&lt;br&gt;CrashFinder was written for the desktop but since CE uses the Portable Executable format too, it works fine.</description></item><item><title>Disassembly - If you don't have COD files</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#407681</link><pubDate>Tue, 12 Apr 2005 21:39:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:407681</guid><dc:creator>sloh</dc:creator><description>Another interesting trick I recently learned -- if you don't have the COD files, you can still figure out what line of disassembly the address corresponds to, by doing &amp;quot;dumpbin /disasm&amp;quot; on the module.  It won't tell you the source code, but you can at least see the disassembly that way.</description></item><item><title>?????????????????????????????? &amp;raquo; Profiling on Unix, Windows and WinCE</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#1317242</link><pubDate>Mon, 18 Dec 2006 17:56:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1317242</guid><dc:creator>?????????????????????????????? » Profiling on Unix, Windows and WinCE</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blog.hubert.tw/2006/12/18/182"&gt;http://blog.hubert.tw/2006/12/18/182&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Troubleshooting guide - part 2</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#9559275</link><pubDate>Tue, 21 Apr 2009 17:09:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9559275</guid><dc:creator>HoppeRx - the cure for your ailing device</dc:creator><description>&lt;p&gt;Below is the second half of a well executed document from guestRx: Bulent Elmaci. Bulent has worked with&lt;/p&gt;
</description></item><item><title> Sue Loh s blog Resolving Symbols Manually on Windows CE ADDRESS | Wood TV Stand</title><link>http://blogs.msdn.com/sloh/archive/2005/02/28/381706.aspx#9687278</link><pubDate>Wed, 03 Jun 2009 00:54:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9687278</guid><dc:creator> Sue Loh s blog Resolving Symbols Manually on Windows CE ADDRESS | Wood TV Stand</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://woodtvstand.info/story.php?id=51754"&gt;http://woodtvstand.info/story.php?id=51754&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>