Adaptation/GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita
author Graeme Price <GRAEME.PRICE@NOKIA.COM>
Fri, 15 Oct 2010 14:32:18 +0100
changeset 15 307f4279f433
permissions -rw-r--r--
Initial contribution of the Adaptation Documentation.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C" xml:lang="en"><title>The
Debug Monitor Command Syntax</title><shortdesc>The debug monitor is entered when the kernel crashes, if a system
process panics, or an unhandled processor exception occurs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Under normal circumstances this ought not to happen, but when the kernel
faults, the device enters the kernel debug monitor. </p>
<p>There may be circumstances where you need to force a kernel crash, for
example, if the system is locking up. Running the test program <filepath>crash.exe</filepath> forces
a crash. This program takes a parameter that defines the number of seconds
that must elapse before the kernel crash is forced. </p>
<p>For example, when the system locks up under certain conditions, run "crash
60", and then recreate the conditions that lead to the lockup. After 60 seconds,
the kernel crash is forced and the debug monitor is entered. </p>
<p>Notes: </p>
<ul>
<li id="GUID-E85767DA-5B42-5F9A-9B5D-4E0ED819FB4B"><p>the EKA2 debug monitor
is very similar to the EKA1 version, although the details displayed may be
different. </p> </li>
<li id="GUID-9E27270F-21AE-582F-9520-8871B09159E6"><p>you will occasionally
find references to the <i>crash debugger</i>; this is the same as the debug
monitor. </p> </li>
</ul>
<section id="GUID-F7E31A93-BAE2-4D83-8AF6-66B9183EE5F0"><title>Getting the
debug monitor going</title> <p>When the kernel faults, the device enters the
debug monitor. </p> <p>To make use of the debug monitor, do the following: </p> <ul>
<li id="GUID-289A65AF-17C1-5C71-8D7F-E9A687355318"><p>Plug the mains adaptor
into the DC jack. </p> </li>
<li id="GUID-19DF62B2-BFF4-592D-820D-5BF74814FF8A"><p>Connect the target device
COM port to your PC, and set the PC serial port to 115200 baud, 8 bits, no
parity, 1 stop bit, XON/XOFF flow control. </p> </li>
<li id="GUID-8A852DA8-ADCD-5E17-963F-4304EF91538C"><p>Press the ON key on
the target device. </p> </li>
<li id="GUID-12889F87-DBD1-514D-A1D6-26D119CE0872"><p>Start a terminal program
on the PC (e.g. HyperTerminal.) </p> </li>
<li id="GUID-FBAEC406-3187-5AC9-850D-5B31521D0B5F"><p>Press <userinput>RETURN</userinput> on
the PC. The target device should reply with the prompt: </p> <codeblock id="GUID-1F5189A4-560F-55ED-AC97-1651D1563E7C" xml:space="preserve">Password:</codeblock> </li>
<li id="GUID-CE10F0C1-308E-5E67-93BF-4EFA81AADF59"><p>Enter the password "replacement"
(all lower case, but without the quotes) on the PC. The target device should
now reply: </p> <codeblock id="GUID-6A58CD1A-DA4E-50BF-A6CB-54B681BF5B35" xml:space="preserve">*** DEBUG MONITOR ***</codeblock> </li>
</ul> <p>You can now enter debug monitor commands. </p> </section>
<section id="GUID-A52544F3-7F66-4354-A29A-B05181A95F07"><title>Crash debugger
commands</title> <p>Commands consist of a single letter describing the operation
to be performed, followed by any arguments. Not all commands take arguments.
Commands are case sensitive; the majority are lower case. Commands should
be entered at the command prompt, on the PC. The set of supported commands
is as follows: </p> <ul>
<li id="GUID-DB12F01A-5AC0-5ABB-AB4E-A2F59969F5AD"><p> <userinput>f</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-D5F2E0AF-EF03-5150-813B-DF989F12C47B">displays
kernel fault information</xref>  </p> </li>
<li id="GUID-946567F9-0B82-5056-84D3-9E25480DB3B1"><p> <userinput>m</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-2A0D5950-F1A5-5EE1-87A3-840B1EAD6AAD">does
a memory dump</xref>  </p> </li>
<li id="GUID-3F2349E5-AE6C-550E-A743-D3B6AF34685F"><p> <userinput>z</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-FDF734D6-9E05-573F-BF40-8DB4C7E0BAC5">does
a memory dump, but skips over unmapped memory space</xref>  </p> </li>
<li id="GUID-B11F3889-ABB2-5458-8648-CC08E268E7A2"><p> <userinput>i</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-D0175D78-6F84-5F4F-BA90-2C591B473C69">displays
information on the current thread and the current process</xref>  </p> </li>
<li id="GUID-B558D40B-F34E-5D13-9170-B22B04EFED51"><p> <userinput>o</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-3494E61C-7097-544C-AE7D-73750337744A">displays
brief DObject information</xref>  </p> </li>
<li id="GUID-B687B7A2-3177-5C14-9191-F9E5DB0F1799"><p> <userinput>O</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-1DED2B2F-E780-50A0-8325-5DA22BC7D3E0">displays
full DObject information</xref>  </p> </li>
<li id="GUID-E6DE23AE-6599-5F97-BC90-14277409FF61"><p> <userinput>p</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-AE1A903F-6351-523C-AD88-AD6CA4527C39">display
short information about code segments</xref>  </p> </li>
<li id="GUID-CEA42CE2-DBF9-514E-BAA2-6A580AA65DC0"><p> <userinput>P</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-9450C209-3F28-581D-87B0-CEA96B94DB62">display
full information about code segments</xref>  </p> </li>
<li id="GUID-DBCA7F2B-F4A9-5A1D-9C14-01A03C912E20"><p> <userinput>c</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-FB2E24A6-9744-5169-BA90-DDF84DF1D3E5">displays
contents of object container; (nb lower case)</xref>  </p> </li>
<li id="GUID-4777B729-FFFA-5882-A60B-1D1E981A0390"><p> <userinput>C</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-55EF66A9-684F-50DA-8E2B-FA00B3D4FB6C">displays
contents of object container; (nb upper case)</xref>  </p> </li>
<li id="GUID-4DFB16FF-91D2-52FD-B2A9-C0D6AEBE682E"><p> <userinput>r</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-0CDF0190-A445-526B-AC1F-D9D58095B18B">dumps
register contents</xref>  </p> </li>
<li id="GUID-D0E5A7FB-9722-5686-82CF-8BC4ECE7CE86"><p> <userinput>S</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-5693700E-6401-56B1-9817-AE0C3A81B42D">dumps
thread stack contents</xref>  </p> </li>
<li id="GUID-B218BE95-7A94-58A1-911A-4CA79F3CE9B5"><p> <userinput>x</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-8F9BAB99-8B88-5120-A95E-A22404110BAE">leaves
the debugger, does a cold restart of the same ROM image; (nb lower case)</xref>  </p> </li>
<li id="GUID-D2089650-2B94-51EB-A0E7-4E15E266DC67"><p> <userinput>X</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-4E12A080-AC83-5872-A66D-4C14A65C5CFA">leaves
the debugger, and returns to the bootloader to wait for a new ROM image to
be downloaded; (nb upper case)</xref>  </p> </li>
<li id="GUID-AE255B3D-C61A-58ED-AFB0-6E003BBE37F6"><p> <userinput>h</userinput> - <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-190C956D-4F57-593B-B3B1-958B6CAE1267">help</xref>. </p> </li>
</ul> </section>
<section id="GUID-D5F2E0AF-EF03-5150-813B-DF989F12C47B"><title>f - display
kernel fault information</title> <p>This command displays information about
the the kernel fault that caused the debugger to be entered. The information
has the following format. </p> <codeblock id="GUID-608A834D-00FA-56E6-AC8A-EA8C762F4315" xml:space="preserve">Fault Category: Exception  Fault Reason: 10000000
ExcId 00000001 CodeAddr ffe0016c DataAddr 80000001 Extra 00000013
Exc 1 Cpsr=68000010 FAR=80000001 FSR=00000013
 R0=00000000  R1=00000000  R2=30000000  R3=80000001
 R4=00000001  R5=00403d68  R6=00002000  R7=00000000
 R8=00000000  R9=00000000 R10=00000000 R11=00403fa0
R12=00403d34 R13=00403d48 R14=500d41e8 R15=ffe0016c
R13Svc=81716000 R14Svc=500480b8 SpsrSvc=20000010</codeblock> <p>Notes: </p> <ul>
<li id="GUID-7FC165D2-735D-50D7-86D0-5513C8D3770A"><p>R15 is the program counter </p> </li>
<li id="GUID-9D653C6D-C085-5EF1-938E-28081214661E"><p>R14 is the link register, </p> </li>
<li id="GUID-5596B888-26D6-57AB-9760-EBEDA927E693"><p>R13 is the stack pointer </p> </li>
</ul> </section>
<section id="GUID-2A0D5950-F1A5-5EE1-87A3-840B1EAD6AAD"><title>m - do a memory
dump</title> <p>This command dumps memory in both hexadecimal and ASCII format.
Use one of the following command formats: </p> <codeblock id="GUID-157ED0E9-4012-5514-B17F-D2CC01A84C31" xml:space="preserve">m start end</codeblock> <codeblock id="GUID-ED0AE1B8-8AF7-5D31-872B-42878C3C11B1" xml:space="preserve">m start+length</codeblock> <p> <codeph>start</codeph> specifies
the start address in hexadecimal, and <codeph>end</codeph> specifies the end
address in hexadecimal. If the second parameter starts with a + character,
then the following hexadecimal characters are interpreted as a length. </p> <p>Address
parameters are always virtual addresses (the MMU is still on). </p> <p>The
resulting format is similar to the EKA1 format. </p> <p>For example: </p> <p><userinput>.m
81c01c60+30</userinput> </p> <codeblock id="GUID-06B94331-E70F-5058-8EE1-BD4310102C11" xml:space="preserve">81C01C60: 00 00 00 00 15 00 00 10 E0 6A 13 50 01 00 00 80 .........j.P....
81C01C70: 30 3B C0 81 34 D9 03 50 00 00 FF FF E8 1C C0 81 0;..4..P........
81C01C80: 34 D9 03 50 30 3B C0 81 FC 4A 13 50 E8 1C C0 81 4..P0;...J.P.....
</codeblock> <p>If an illegal memory access occurs, the debugger traps the
exception and displays an error message. </p> </section>
<section id="GUID-FDF734D6-9E05-573F-BF40-8DB4C7E0BAC5"><title>z - do a memory
dump, skipping over unmapped memory</title> <p>This command dumps memory in
both hexadecimal and ASCII format, but excludes any unmapped memory space.
If an illegal memory access occurs, it does not stop, but skips to the next
page instead. This is useful to inspect the content of discontiguous chunks. </p> <p>The
syntax and the display format is the same as for the <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-2A0D5950-F1A5-5EE1-87A3-840B1EAD6AAD">m</xref> command. </p> </section>
<section id="GUID-D0175D78-6F84-5F4F-BA90-2C591B473C69"><title>i - display
information for the current process and thread</title> <p>This command displays
information for the current process and thread. </p> <codeblock id="GUID-6EFED69E-3792-5F19-ACE5-A63F922F35DA" xml:space="preserve">SCHEDULER @80000d98: CurrentThread 8070dd28
RescheduleNeeded=00 DfcPending=00 KernCSLocked=00000001
DFCS: next 80000ea8 prev 80000ea8
ProcessHandler=5004b040, AddressSpace=8070d7c8
SYSLOCK: HoldingThread 8070dd28 iWaiting 00000000
Extras 0: 8070d7c8 1: 8070d7c8 2: 8070d7c8 3: 00000000
Extras 4: 00000000 5: 00000000 6: 00000000 7: 00000000
Extras 8: 00000000 9: 00000000 A: 00000000 B: 00000000
Extras C: 00000000 D: 00000000 E: 00000000 F: 00000000
</codeblock> <p>The format for the thread is: </p> <codeblock id="GUID-53C336CC-CA91-542A-8BB3-858DF9F32745" xml:space="preserve">TheCurrentThread=8070da6c
THREAD at 8070da6c VPTR=50052b50 AccessCount=3 Owner=8070d7c8
Full name crash::Main
Thread MState READY
Default priority 28 WaitLink Priority 28
ExitInfo 3,0,
Flags 80000004, Handles 8070a79c
Superviso81715000 size 1000
User stack base 00402000 size 2000
Id=19, Heap=00600000, Created heap=00600000, Frame=00000000
Trap handler=00000000, ActiveScheduler=00000000, Exception
handler=00000000
TempObj=00000000 TempAlloc=00000000
NThread @ 8070dd28 Pri 28 NState READY
Next=8070dd28 Prev=8070dd28 Att=03 ExcInUserMode=10
HeldFM=80000eb8 WaitFM=00000000 AddrSp=8070d7c8
Time=0 Timeslice=20 ReqCount=0
SuspendCount=0 CsCount=0 CsFunction=00000000
SavedSP=81715d6c
CAR 00000001
DACR 30315507
R13_USR 00000000 R14_USR 81715dc4 SPSR_SVC 81715e10
 R4 30303031  R5 30303030  R6 81715dc4  R7 81715e14
 R8 81715dac  R9 81715da0 R10 50055c88 R11 50055c3c
 PC 81715dc0</codeblock> <p>The format for the process is: </p> <codeblock id="GUID-1D3E3B5D-9E9C-5D2D-A720-004B2783087E" xml:space="preserve">TheCurrentProcess=8070d7c8
PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000
Full name crash
ExitInfo 3,0,
Flags 00040000, Handles 80709c98, Attributes 60010000
DataBssChunk 8070a514, CodeChunk 8070a9a8
DllDataChunk 00000000, Process Lock 8070d90c
NumChunks=2
0: Chunk 8070a514, run 00400000, access count 1
1: Chunk 8070a704, run 00600000, access count 1
Domain -1, DACR 55555507
TheCurrentAddressSpace=8070d7c8
TheCurrentVMProcess=8070d7c8
PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000
Full name crash
ExitInfo 3,0,
Flags 00040000, Handles 80709c98, Attributes 60010000
DataBssChunk 8070a514, CodeChunk 8070a9a8
DllDataChunk 00000000, Process Lock 8070d90c
NumChunks=2
0: Chunk 8070a514, run 00400000, access count 1
1: Chunk 8070a704, run 00600000, access count 1
Domain -1, DACR 55555507
TheCurrentDataSectionProcess=8070d7c8
TheCompleteDataSectionProcess=8070d7c8
PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000
Full name crash
ExitInfo 3,0,
Flags 00040000, Handles 80709c98, Attributes 60010000
DataBssChunk 8070a514, CodeChunk 8070a9a8
DllDataChunk 00000000, Process Lock 8070d90c
NumChunks=2
0: Chunk 8070a514, run 00400000, access count 1
1: Chunk 8070a704, run 00600000, access count 1
Domain -1, DACR 55555507
</codeblock> </section>
<section id="GUID-3494E61C-7097-544C-AE7D-73750337744A"><title>o - display
brief DObject information</title> <p>This command in <i>lower case</i> displays
basic information about the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. The command has the
following syntax: </p> <codeblock id="GUID-9F24821C-78C8-5CD0-8FF7-60F4A485C898" xml:space="preserve">o address</codeblock> <p>where <codeph>address</codeph> specifies
the address of the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. </p> <p>For example: </p> <p><userinput>o
6403c170</userinput> </p> <codeblock id="GUID-4BB938B5-EB18-54E7-93AF-C06B79FEAB6F" xml:space="preserve">THREAD at 6403c170 VPTR=f8046c18 AccessCount=3 Owner=6403bb4c
Full name crash::Main
</codeblock> </section>
<section id="GUID-1DED2B2F-E780-50A0-8325-5DA22BC7D3E0"><title>O - display
full DObject information</title> <p>This command in <i>upper case</i> displays
full information about the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. The exact format displayed
depends on the exact type of the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref> being referenced,
for example, whether it is a thread, process, or a chunk. The command has
the following syntax: </p> <codeblock id="GUID-C817409C-04A2-54BA-ABB6-185950CF4462" xml:space="preserve">O address</codeblock> <p>where <codeph>address</codeph> specifies
the address of the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. </p> </section>
<section id="GUID-AE1A903F-6351-523C-AD88-AD6CA4527C39"><title>p - display
short information about code segments</title> <p>This command in <i>lower
case</i> displays basic information about one or more code segments, as encapsulated
by <codeph>DCodeSeg</codeph> objects. The command has the following syntax: </p> <codeblock id="GUID-EA2F3910-8E6B-58AA-B2DF-BED7E002C786" xml:space="preserve">p address | all</codeblock> <p>where: </p> <ul>
<li id="GUID-AE4B3337-4438-5DC8-B84E-D5CABF708E5E"><p> <codeph>address</codeph> is
the address of a specific code segment </p> </li>
<li id="GUID-878886DD-9F7F-5B42-963F-37F7D5058F11"><p> <codeph>all</codeph> refers
to all code segments. </p> </li>
</ul> <p>For example: </p> <p><userinput>p 64053b70</userinput> </p> <codeblock id="GUID-9B44910A-3FB8-5283-AD41-29E5192A6393" xml:space="preserve">.p 64053b70
CodeSeg at 64053b70:
 FileName: Z:\sys\bin\crash.exe
 RunAddress: f83e3498</codeblock> </section>
<section id="GUID-9450C209-3F28-581D-87B0-CEA96B94DB62"><title>P - display
full information about code segments</title> <p>This command in <i>upper case</i> displays
the full information about one or more code segments, as encapsulated by <codeph>DCodeSeg</codeph> objects.
The command has the following syntax: </p> <codeblock id="GUID-FBFC0802-A4CA-5050-8DC7-893144A24330" xml:space="preserve">P address | all</codeblock> <p>where: </p> <ul>
<li id="GUID-DE005DAD-FBDB-5A07-8E6A-6D95A64E6BD5"><p> <codeph>address</codeph> is
the address of a specific code segment </p> </li>
<li id="GUID-339213D1-55B3-546B-B8CC-32785469CCC0"><p> <codeph>all</codeph> refers
to all code segments. </p> </li>
</ul> <p>For example: </p> <p><userinput>P 64053b70</userinput> </p> <codeblock id="GUID-B6B41D55-0093-5118-B5EB-C956AE8980EA" xml:space="preserve">.p 64053b70
CodeSeg at 64053b70:
 FileName: Z:\sys\bin\crash.exe
 RunAddress: f83e3498

 iLink:     Prev 64052f48 (64052f40) Next 640000e0 (640000d8)
 iTempLink: Prev dfdfdfdf (dfdfdfcf) Next 00000000 (00000000)
 iGbgLink:  Prev 00000000 (00000000) Next 00000000 (00000000)
 iAccessCount: 1
 iEntryPtVeneer: f83e3498
 iFileEntryPoint: f83e3498
 iExtOffset: 10
 iUids: 1000007a 00000000 00000000
 iDeps: 00000000 ( )
 iDepCount: 0
 iNextDep: 0
 iMark: 31
 iAttr: a
 iExeCodeSeg: 64053b70
 iAttachProcess: 00000000
 iModuleVersion: a0000
 iS:
   SecureId: 00000000, VendorId: 70000001
   Caps: 000fffff 00000000
 iSize: 370

 iXIP: 1
 iInfo: f83e3420 (TRomImageHeader*)
  iUid1: 1000007a, iUid2: 00000000, iUid3: 00000000
  iUidChecksum: 045ac39e
  iEntryPoint:  f83e3498
  iCodeAddress: f83e3498, iCodeSize: 00000370
  iDataAddress: 00000000, iDataSize: 00000000
  iTextSize:    00000370, iBssSize:  00000000
  iHeapSizeMin: 00001000, iHeapSizeMax: 00100000, iStackSize: 00002000
  iDllRefTable: 00000000
  iExportDirCount: 0, iExportDir: f83e33fc
  iS:
    SecureId: 00000000, VendorId: 70000001
    Caps: 000fffff 00000000
  iToolsVersion: Major 02 Minor 01 Build 0225
  iFlags: 0000002a
  iPriority: 352
  iDataBssLinearBase: 00400000
  iNextExtension: 00000000
  iHardwareVariant: 01000000
  iTotalDataSize: 00000000
  iModuleVersion: 000a0000
  iExceptionDescriptor: f83e34f4

 iCodeAllocBase: 80000000
 iDataAllocBase: 80000000
 iKernelData: 00000000</codeblock> </section>
<section id="GUID-FB2E24A6-9744-5169-BA90-DDF84DF1D3E5"><title>c - display
contents of object container</title> <p>This command in <i>lower case</i> displays
the contents of one of the kernel's object containers, a <codeph>DObjectCon</codeph> type.
Note that information is dumped very quickly without page breaks, which is
useful in situations where the kernel is likely to become very unstable very
shortly after crashing. There is an upper case version of this command, <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-55EF66A9-684F-50DA-8E2B-FA00B3D4FB6C">C</xref>,
which generates output with a pause between pages. </p> <p>The command has
the following syntax: </p> <codeblock id="GUID-71EF50B9-1612-57CA-840D-F142CF5EE88E" xml:space="preserve">c type</codeblock> <p>where <codeph>type</codeph> is
a single hexadecimal digit between 0 and D inclusive that specifies which
kernel container is to be dumped. The mapping between the hexadecimal digit
and the kernel container is: </p> <table id="GUID-B1F908E6-0492-507E-BDAC-D010A1C4E231">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<tbody>
<row>
<entry><p>0</p> </entry>
<entry><p>Threads </p> </entry>
</row>
<row>
<entry><p>1</p> </entry>
<entry><p>Processes </p> </entry>
</row>
<row>
<entry><p>2</p> </entry>
<entry><p>Chunks </p> </entry>
</row>
<row>
<entry><p>3</p> </entry>
<entry><p>Libraries </p> </entry>
</row>
<row>
<entry><p>4</p> </entry>
<entry><p>Semaphores </p> </entry>
</row>
<row>
<entry><p>5</p> </entry>
<entry><p>Mutexes </p> </entry>
</row>
<row>
<entry><p>6</p> </entry>
<entry><p>Timers </p> </entry>
</row>
<row>
<entry><p>7</p> </entry>
<entry><p>Servers </p> </entry>
</row>
<row>
<entry><p>8</p> </entry>
<entry><p>Sessions </p> </entry>
</row>
<row>
<entry><p>9</p> </entry>
<entry><p>LogicalDevices </p> </entry>
</row>
<row>
<entry><p>A</p> </entry>
<entry><p>PhysicalDevices </p> </entry>
</row>
<row>
<entry><p>B</p> </entry>
<entry><p>Channels </p> </entry>
</row>
<row>
<entry><p>C</p> </entry>
<entry><p>ChangeNotifiers </p> </entry>
</row>
<row>
<entry><p>D</p> </entry>
<entry><p>Undertakers </p> </entry>
</row>
<row>
<entry><p>E</p> </entry>
<entry><p>Message queues </p> </entry>
</row>
<row>
<entry><p>F</p> </entry>
<entry><p>Property references </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p>For example: </p> <p><userinput>c A</userinput> </p> <codeblock id="GUID-9153AF8D-8F14-5E1E-B6A5-F24502DF704D" xml:space="preserve">Container 10 at 640275c4 contains 3 PHYSICAL DEVICES:
PHYSICAL DEVICE at 64032dac VPTR=f805d9fc AccessCount=2 Owner=00000000
Full name Media.IRam
PHYSICAL DEVICE at 640339e8 VPTR=f8067e44 AccessCount=2 Owner=00000000
Full name Media.Flash
PHYSICAL DEVICE at 64033a64 VPTR=f806b9f8 AccessCount=2 Owner=00000000
Full name Media.Ata
</codeblock> <p><userinput>c 0</userinput> </p> <codeblock id="GUID-D0EAECD6-B683-591A-964F-C8C893A074F0" xml:space="preserve">Container 0 at 807022b8 contains 12 THREADS:
THREAD at 807011c0 VPTR=50052b04 AccessCount=1 Owner=8070107c
Full name EKern::Null
Thread MState READY
Default priority 0 WaitLink Priority 0
ExitInfo 3,0,
Flags 0000000c, Handles 80701520
Supervisor stack base 80700000 size 1000
User stack base 00000000 size 0
Id=0, Heap=00000000, Created heap=00000000, Frame=00000000
Trap handler=00000000, ActiveScheduler=00000000, Exception
handler=00000000
TempObj=00000000 TempAlloc=00000000
NThread @ 8070147c Pri 0 NState READY
Next=8070147c Prev=8070147c Att=00 ExcInUserMode=00
HeldFM=00000000 WaitFM=00000000 AddrSp=8070107c
Time=-1 Timeslice=-1 ReqCount=0
SuspendCount=0 CsCount=0 CsFunction=00000000
SavedSP=80700f50
CAR 00000001
DACR 55555547
R13_USR 00403ed4 R14_USR 500c88b4 SPSR_SVC 200000d3
 R4 00000009  R5 5004b7ec  R6 50000000  R7 dc911000
 R8 00000000  R9 807103c0 R10 50002140 R11 80700fb4
 PC 500481b4
</codeblock> <p>The information displayed for each object is the same as that
shown after using the <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-1DED2B2F-E780-50A0-8325-5DA22BC7D3E0">q</xref> command.
After displaying the information for each object, the debugger pauses until
you press a key. </p> <p>Notes </p> <ul>
<li id="GUID-63AF0857-4C02-5F39-8CB2-E57E11727F92"><p>the <codeph>DObjectCon</codeph> class
is internal to Symbian platform. </p> </li>
<li id="GUID-827905CF-C25F-56D6-B40B-416C3DA1C5CB"><p>the type value passed
as an argument to the command is one of the enum values of the <codeph>TObjectType</codeph> enum;
this enum is internal to Symbian platform. </p> </li>
</ul> </section>
<section id="GUID-55EF66A9-684F-50DA-8E2B-FA00B3D4FB6C"><title>C - display
contents of object container</title> <p>This command in <i>upper case</i> is
exactly the same as the lower case <xref href="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C.dita#GUID-08E14B34-5144-5AA8-AA55-7AF03671676C/GUID-FB2E24A6-9744-5169-BA90-DDF84DF1D3E5">c</xref> command
except that the display of output pauses between pages. If you need to dump
output as fast as possible without pauses, use the lower case version. </p> </section>
<section id="GUID-0CDF0190-A445-526B-AC1F-D9D58095B18B"><title>r - dump register
contents</title> <p>This command dumps the full ARM register set. </p> <p>On
ARM this dumps the full set of user mode registers and all the alternate registers
for other modes. </p> <p>For example: </p> <p><userinput>r</userinput> </p> <codeblock id="GUID-4569C1FE-78B0-518F-A2A0-642CECD9E1F3" xml:space="preserve">MODE_USR:
 R0=6571de54  R1=0000002a  R2=00000002  R3=ffffffff
 R4=0000002a  R5=f8170414  R6=6571df14  R7=6403cba8
 R8=00000001  R9=6403c41c R10=640002f8 R11=6571de70
R12=00000020 R13=00404e00 R14=f80818c0 R15=f800bfa8
CPSR=60000013
MODE_FIQ:
 R8=00000000  R9=ffffffff R10=ffffffff R11=00000000
R12=00000000 R13=64000d0c R14=c080079c SPSR=e00000dc
MODE_IRQ:
R13=6400110c R14=00000013 SPSR=20000013
MODE_SVC:
R13=6571de54 R14=f80328bc SPSR=60000010
MODE_ABT:
R13=6400090c R14=ffff0010 SPSR=400000d7
MODE_UND:
R13=6400090c R14=95221110 SPSR=f000009d
</codeblock> </section>
<section id="GUID-5693700E-6401-56B1-9817-AE0C3A81B42D"><title>S - Dumps thread
stack contents</title> <p>This command, in upper case, dumps both the user
and supervisor stacks used by each thread in the system. Some threads do not
have a user thread, in which case this is indicated. Each set of stacks is
displayed in turn, in the following format: </p> <codeblock id="GUID-F8622389-3BD3-5CC9-A6BC-4358BCE8F5F8" xml:space="preserve">THREAD at c8052fa0 VPTR=80082304 AccessCount=6 Owner=c8044608
Full name efile.exe::LoaderThread
User stack base at 00410000, size == 1000
Stack pointer == 00413e30
Stack mapped at 00410000
00413e30: 10 01 70 01 99 93 1b 80 18 01 70 01 d0 56 1b 80 ..p.......p..V..
00413e40: 00 00 00 00 00 00 00 00 84 00 70 01 84 00 70 01 ..........p...p.
00413e50: 04 00 00 00 23 91 1b 80 38 01 70 01 10 01 70 01 ....#...8.p...p.
00413e60: 80 3e 41 00 01 00 00 00 10 01 70 01 00 00 00 00 .&gt;A.......p.....
00413e70: 84 00 70 01 cd 91 1b 80 30 02 70 01 00 00 00 00 ..p.....0.p.....

Supervisor stack base at c9127000, size == 1000
Stack pointer == c9127fbc
c9127fb0: b0 d1 0a c8 0c 00 00 00 13 00 00 00 00 07 00 00 ................
c9127fc0: 00 00 f0 00 45 55 55 55 30 3e 41 00 89 ff 1b 80 ....EUUU0&gt;A.....
c9127fd0: 10 00 00 20 10 01 70 01 80 3e 41 00 98 c7 23 80 ... ..p..&gt;A...#.
c9127fe0: 58 3e 41 00 04 00 00 00 40 00 00 00 98 4b 04 c8 X&gt;A.....@....K..
c9127ff0: 60 04 00 c8 98 01 02 80 00 00 00 00 10 5a 1b 80 `............Z..</codeblock> <p><note> With
a multiple memory model, this command is the only way to reliably dump a stack. </note></p> </section>
<section id="GUID-8F9BAB99-8B88-5120-A95E-A22404110BAE"><title>x - leave debugger,
cold restart of ROM image</title> <p>This command, in lower case, leaves the
debugger and does a cold restart of the current ROM image. </p> </section>
<section id="GUID-4E12A080-AC83-5872-A66D-4C14A65C5CFA"><title>X - leave debugger,
return to bootloader</title> <p>This command, in upper case, leaves the debugger,
and returns to the bootloader to wait for a new ROM image to be downloaded. </p> </section>
<section id="GUID-190C956D-4F57-593B-B3B1-958B6CAE1267"><title>h - Help</title> <p>Displays
a short summery of the crash debugger commands. </p> </section>
</conbody></concept>