|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-08E14B34-5144-5AA8-AA55-7AF03671676C" xml:lang="en"><title>The |
|
13 Debug Monitor Command Syntax</title><shortdesc>The debug monitor is entered when the kernel crashes, if a system |
|
14 process panics, or an unhandled processor exception occurs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
15 <p>Under normal circumstances this ought not to happen, but when the kernel |
|
16 faults, the device enters the kernel debug monitor. </p> |
|
17 <p>There may be circumstances where you need to force a kernel crash, for |
|
18 example, if the system is locking up. Running the test program <filepath>crash.exe</filepath> forces |
|
19 a crash. This program takes a parameter that defines the number of seconds |
|
20 that must elapse before the kernel crash is forced. </p> |
|
21 <p>For example, when the system locks up under certain conditions, run "crash |
|
22 60", and then recreate the conditions that lead to the lockup. After 60 seconds, |
|
23 the kernel crash is forced and the debug monitor is entered. </p> |
|
24 <p>Notes: </p> |
|
25 <ul> |
|
26 <li id="GUID-E85767DA-5B42-5F9A-9B5D-4E0ED819FB4B"><p>the EKA2 debug monitor |
|
27 is very similar to the EKA1 version, although the details displayed may be |
|
28 different. </p> </li> |
|
29 <li id="GUID-9E27270F-21AE-582F-9520-8871B09159E6"><p>you will occasionally |
|
30 find references to the <i>crash debugger</i>; this is the same as the debug |
|
31 monitor. </p> </li> |
|
32 </ul> |
|
33 <section id="GUID-F7E31A93-BAE2-4D83-8AF6-66B9183EE5F0"><title>Getting the |
|
34 debug monitor going</title> <p>When the kernel faults, the device enters the |
|
35 debug monitor. </p> <p>To make use of the debug monitor, do the following: </p> <ul> |
|
36 <li id="GUID-289A65AF-17C1-5C71-8D7F-E9A687355318"><p>Plug the mains adaptor |
|
37 into the DC jack. </p> </li> |
|
38 <li id="GUID-19DF62B2-BFF4-592D-820D-5BF74814FF8A"><p>Connect the target device |
|
39 COM port to your PC, and set the PC serial port to 115200 baud, 8 bits, no |
|
40 parity, 1 stop bit, XON/XOFF flow control. </p> </li> |
|
41 <li id="GUID-8A852DA8-ADCD-5E17-963F-4304EF91538C"><p>Press the ON key on |
|
42 the target device. </p> </li> |
|
43 <li id="GUID-12889F87-DBD1-514D-A1D6-26D119CE0872"><p>Start a terminal program |
|
44 on the PC (e.g. HyperTerminal.) </p> </li> |
|
45 <li id="GUID-FBAEC406-3187-5AC9-850D-5B31521D0B5F"><p>Press <userinput>RETURN</userinput> on |
|
46 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> |
|
47 <li id="GUID-CE10F0C1-308E-5E67-93BF-4EFA81AADF59"><p>Enter the password "replacement" |
|
48 (all lower case, but without the quotes) on the PC. The target device should |
|
49 now reply: </p> <codeblock id="GUID-6A58CD1A-DA4E-50BF-A6CB-54B681BF5B35" xml:space="preserve">*** DEBUG MONITOR ***</codeblock> </li> |
|
50 </ul> <p>You can now enter debug monitor commands. </p> </section> |
|
51 <section id="GUID-A52544F3-7F66-4354-A29A-B05181A95F07"><title>Crash debugger |
|
52 commands</title> <p>Commands consist of a single letter describing the operation |
|
53 to be performed, followed by any arguments. Not all commands take arguments. |
|
54 Commands are case sensitive; the majority are lower case. Commands should |
|
55 be entered at the command prompt, on the PC. The set of supported commands |
|
56 is as follows: </p> <ul> |
|
57 <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 |
|
58 kernel fault information</xref> </p> </li> |
|
59 <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 |
|
60 a memory dump</xref> </p> </li> |
|
61 <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 |
|
62 a memory dump, but skips over unmapped memory space</xref> </p> </li> |
|
63 <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 |
|
64 information on the current thread and the current process</xref> </p> </li> |
|
65 <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 |
|
66 brief DObject information</xref> </p> </li> |
|
67 <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 |
|
68 full DObject information</xref> </p> </li> |
|
69 <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 |
|
70 short information about code segments</xref> </p> </li> |
|
71 <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 |
|
72 full information about code segments</xref> </p> </li> |
|
73 <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 |
|
74 contents of object container; (nb lower case)</xref> </p> </li> |
|
75 <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 |
|
76 contents of object container; (nb upper case)</xref> </p> </li> |
|
77 <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 |
|
78 register contents</xref> </p> </li> |
|
79 <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 |
|
80 thread stack contents</xref> </p> </li> |
|
81 <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 |
|
82 the debugger, does a cold restart of the same ROM image; (nb lower case)</xref> </p> </li> |
|
83 <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 |
|
84 the debugger, and returns to the bootloader to wait for a new ROM image to |
|
85 be downloaded; (nb upper case)</xref> </p> </li> |
|
86 <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> |
|
87 </ul> </section> |
|
88 <section id="GUID-D5F2E0AF-EF03-5150-813B-DF989F12C47B"><title>f - display |
|
89 kernel fault information</title> <p>This command displays information about |
|
90 the the kernel fault that caused the debugger to be entered. The information |
|
91 has the following format. </p> <codeblock id="GUID-608A834D-00FA-56E6-AC8A-EA8C762F4315" xml:space="preserve">Fault Category: Exception Fault Reason: 10000000 |
|
92 ExcId 00000001 CodeAddr ffe0016c DataAddr 80000001 Extra 00000013 |
|
93 Exc 1 Cpsr=68000010 FAR=80000001 FSR=00000013 |
|
94 R0=00000000 R1=00000000 R2=30000000 R3=80000001 |
|
95 R4=00000001 R5=00403d68 R6=00002000 R7=00000000 |
|
96 R8=00000000 R9=00000000 R10=00000000 R11=00403fa0 |
|
97 R12=00403d34 R13=00403d48 R14=500d41e8 R15=ffe0016c |
|
98 R13Svc=81716000 R14Svc=500480b8 SpsrSvc=20000010</codeblock> <p>Notes: </p> <ul> |
|
99 <li id="GUID-7FC165D2-735D-50D7-86D0-5513C8D3770A"><p>R15 is the program counter </p> </li> |
|
100 <li id="GUID-9D653C6D-C085-5EF1-938E-28081214661E"><p>R14 is the link register, </p> </li> |
|
101 <li id="GUID-5596B888-26D6-57AB-9760-EBEDA927E693"><p>R13 is the stack pointer </p> </li> |
|
102 </ul> </section> |
|
103 <section id="GUID-2A0D5950-F1A5-5EE1-87A3-840B1EAD6AAD"><title>m - do a memory |
|
104 dump</title> <p>This command dumps memory in both hexadecimal and ASCII format. |
|
105 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 |
|
106 the start address in hexadecimal, and <codeph>end</codeph> specifies the end |
|
107 address in hexadecimal. If the second parameter starts with a + character, |
|
108 then the following hexadecimal characters are interpreted as a length. </p> <p>Address |
|
109 parameters are always virtual addresses (the MMU is still on). </p> <p>The |
|
110 resulting format is similar to the EKA1 format. </p> <p>For example: </p> <p><userinput>.m |
|
111 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.... |
|
112 81C01C70: 30 3B C0 81 34 D9 03 50 00 00 FF FF E8 1C C0 81 0;..4..P........ |
|
113 81C01C80: 34 D9 03 50 30 3B C0 81 FC 4A 13 50 E8 1C C0 81 4..P0;...J.P..... |
|
114 </codeblock> <p>If an illegal memory access occurs, the debugger traps the |
|
115 exception and displays an error message. </p> </section> |
|
116 <section id="GUID-FDF734D6-9E05-573F-BF40-8DB4C7E0BAC5"><title>z - do a memory |
|
117 dump, skipping over unmapped memory</title> <p>This command dumps memory in |
|
118 both hexadecimal and ASCII format, but excludes any unmapped memory space. |
|
119 If an illegal memory access occurs, it does not stop, but skips to the next |
|
120 page instead. This is useful to inspect the content of discontiguous chunks. </p> <p>The |
|
121 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> |
|
122 <section id="GUID-D0175D78-6F84-5F4F-BA90-2C591B473C69"><title>i - display |
|
123 information for the current process and thread</title> <p>This command displays |
|
124 information for the current process and thread. </p> <codeblock id="GUID-6EFED69E-3792-5F19-ACE5-A63F922F35DA" xml:space="preserve">SCHEDULER @80000d98: CurrentThread 8070dd28 |
|
125 RescheduleNeeded=00 DfcPending=00 KernCSLocked=00000001 |
|
126 DFCS: next 80000ea8 prev 80000ea8 |
|
127 ProcessHandler=5004b040, AddressSpace=8070d7c8 |
|
128 SYSLOCK: HoldingThread 8070dd28 iWaiting 00000000 |
|
129 Extras 0: 8070d7c8 1: 8070d7c8 2: 8070d7c8 3: 00000000 |
|
130 Extras 4: 00000000 5: 00000000 6: 00000000 7: 00000000 |
|
131 Extras 8: 00000000 9: 00000000 A: 00000000 B: 00000000 |
|
132 Extras C: 00000000 D: 00000000 E: 00000000 F: 00000000 |
|
133 </codeblock> <p>The format for the thread is: </p> <codeblock id="GUID-53C336CC-CA91-542A-8BB3-858DF9F32745" xml:space="preserve">TheCurrentThread=8070da6c |
|
134 THREAD at 8070da6c VPTR=50052b50 AccessCount=3 Owner=8070d7c8 |
|
135 Full name crash::Main |
|
136 Thread MState READY |
|
137 Default priority 28 WaitLink Priority 28 |
|
138 ExitInfo 3,0, |
|
139 Flags 80000004, Handles 8070a79c |
|
140 Superviso81715000 size 1000 |
|
141 User stack base 00402000 size 2000 |
|
142 Id=19, Heap=00600000, Created heap=00600000, Frame=00000000 |
|
143 Trap handler=00000000, ActiveScheduler=00000000, Exception |
|
144 handler=00000000 |
|
145 TempObj=00000000 TempAlloc=00000000 |
|
146 NThread @ 8070dd28 Pri 28 NState READY |
|
147 Next=8070dd28 Prev=8070dd28 Att=03 ExcInUserMode=10 |
|
148 HeldFM=80000eb8 WaitFM=00000000 AddrSp=8070d7c8 |
|
149 Time=0 Timeslice=20 ReqCount=0 |
|
150 SuspendCount=0 CsCount=0 CsFunction=00000000 |
|
151 SavedSP=81715d6c |
|
152 CAR 00000001 |
|
153 DACR 30315507 |
|
154 R13_USR 00000000 R14_USR 81715dc4 SPSR_SVC 81715e10 |
|
155 R4 30303031 R5 30303030 R6 81715dc4 R7 81715e14 |
|
156 R8 81715dac R9 81715da0 R10 50055c88 R11 50055c3c |
|
157 PC 81715dc0</codeblock> <p>The format for the process is: </p> <codeblock id="GUID-1D3E3B5D-9E9C-5D2D-A720-004B2783087E" xml:space="preserve">TheCurrentProcess=8070d7c8 |
|
158 PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000 |
|
159 Full name crash |
|
160 ExitInfo 3,0, |
|
161 Flags 00040000, Handles 80709c98, Attributes 60010000 |
|
162 DataBssChunk 8070a514, CodeChunk 8070a9a8 |
|
163 DllDataChunk 00000000, Process Lock 8070d90c |
|
164 NumChunks=2 |
|
165 0: Chunk 8070a514, run 00400000, access count 1 |
|
166 1: Chunk 8070a704, run 00600000, access count 1 |
|
167 Domain -1, DACR 55555507 |
|
168 TheCurrentAddressSpace=8070d7c8 |
|
169 TheCurrentVMProcess=8070d7c8 |
|
170 PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000 |
|
171 Full name crash |
|
172 ExitInfo 3,0, |
|
173 Flags 00040000, Handles 80709c98, Attributes 60010000 |
|
174 DataBssChunk 8070a514, CodeChunk 8070a9a8 |
|
175 DllDataChunk 00000000, Process Lock 8070d90c |
|
176 NumChunks=2 |
|
177 0: Chunk 8070a514, run 00400000, access count 1 |
|
178 1: Chunk 8070a704, run 00600000, access count 1 |
|
179 Domain -1, DACR 55555507 |
|
180 TheCurrentDataSectionProcess=8070d7c8 |
|
181 TheCompleteDataSectionProcess=8070d7c8 |
|
182 PROCESS at 8070d7c8 VPTR=50052bc4 AccessCount=5 Owner=00000000 |
|
183 Full name crash |
|
184 ExitInfo 3,0, |
|
185 Flags 00040000, Handles 80709c98, Attributes 60010000 |
|
186 DataBssChunk 8070a514, CodeChunk 8070a9a8 |
|
187 DllDataChunk 00000000, Process Lock 8070d90c |
|
188 NumChunks=2 |
|
189 0: Chunk 8070a514, run 00400000, access count 1 |
|
190 1: Chunk 8070a704, run 00600000, access count 1 |
|
191 Domain -1, DACR 55555507 |
|
192 </codeblock> </section> |
|
193 <section id="GUID-3494E61C-7097-544C-AE7D-73750337744A"><title>o - display |
|
194 brief DObject information</title> <p>This command in <i>lower case</i> displays |
|
195 basic information about the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. The command has the |
|
196 following syntax: </p> <codeblock id="GUID-9F24821C-78C8-5CD0-8FF7-60F4A485C898" xml:space="preserve">o address</codeblock> <p>where <codeph>address</codeph> specifies |
|
197 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 |
|
198 6403c170</userinput> </p> <codeblock id="GUID-4BB938B5-EB18-54E7-93AF-C06B79FEAB6F" xml:space="preserve">THREAD at 6403c170 VPTR=f8046c18 AccessCount=3 Owner=6403bb4c |
|
199 Full name crash::Main |
|
200 </codeblock> </section> |
|
201 <section id="GUID-1DED2B2F-E780-50A0-8325-5DA22BC7D3E0"><title>O - display |
|
202 full DObject information</title> <p>This command in <i>upper case</i> displays |
|
203 full information about the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. The exact format displayed |
|
204 depends on the exact type of the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref> being referenced, |
|
205 for example, whether it is a thread, process, or a chunk. The command has |
|
206 the following syntax: </p> <codeblock id="GUID-C817409C-04A2-54BA-ABB6-185950CF4462" xml:space="preserve">O address</codeblock> <p>where <codeph>address</codeph> specifies |
|
207 the address of the <xref href="GUID-E48F1435-14B6-37F1-BE47-2EA803AFE497.dita"><apiname>DObject</apiname></xref>. </p> </section> |
|
208 <section id="GUID-AE1A903F-6351-523C-AD88-AD6CA4527C39"><title>p - display |
|
209 short information about code segments</title> <p>This command in <i>lower |
|
210 case</i> displays basic information about one or more code segments, as encapsulated |
|
211 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> |
|
212 <li id="GUID-AE4B3337-4438-5DC8-B84E-D5CABF708E5E"><p> <codeph>address</codeph> is |
|
213 the address of a specific code segment </p> </li> |
|
214 <li id="GUID-878886DD-9F7F-5B42-963F-37F7D5058F11"><p> <codeph>all</codeph> refers |
|
215 to all code segments. </p> </li> |
|
216 </ul> <p>For example: </p> <p><userinput>p 64053b70</userinput> </p> <codeblock id="GUID-9B44910A-3FB8-5283-AD41-29E5192A6393" xml:space="preserve">.p 64053b70 |
|
217 CodeSeg at 64053b70: |
|
218 FileName: Z:\sys\bin\crash.exe |
|
219 RunAddress: f83e3498</codeblock> </section> |
|
220 <section id="GUID-9450C209-3F28-581D-87B0-CEA96B94DB62"><title>P - display |
|
221 full information about code segments</title> <p>This command in <i>upper case</i> displays |
|
222 the full information about one or more code segments, as encapsulated by <codeph>DCodeSeg</codeph> objects. |
|
223 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> |
|
224 <li id="GUID-DE005DAD-FBDB-5A07-8E6A-6D95A64E6BD5"><p> <codeph>address</codeph> is |
|
225 the address of a specific code segment </p> </li> |
|
226 <li id="GUID-339213D1-55B3-546B-B8CC-32785469CCC0"><p> <codeph>all</codeph> refers |
|
227 to all code segments. </p> </li> |
|
228 </ul> <p>For example: </p> <p><userinput>P 64053b70</userinput> </p> <codeblock id="GUID-B6B41D55-0093-5118-B5EB-C956AE8980EA" xml:space="preserve">.p 64053b70 |
|
229 CodeSeg at 64053b70: |
|
230 FileName: Z:\sys\bin\crash.exe |
|
231 RunAddress: f83e3498 |
|
232 |
|
233 iLink: Prev 64052f48 (64052f40) Next 640000e0 (640000d8) |
|
234 iTempLink: Prev dfdfdfdf (dfdfdfcf) Next 00000000 (00000000) |
|
235 iGbgLink: Prev 00000000 (00000000) Next 00000000 (00000000) |
|
236 iAccessCount: 1 |
|
237 iEntryPtVeneer: f83e3498 |
|
238 iFileEntryPoint: f83e3498 |
|
239 iExtOffset: 10 |
|
240 iUids: 1000007a 00000000 00000000 |
|
241 iDeps: 00000000 ( ) |
|
242 iDepCount: 0 |
|
243 iNextDep: 0 |
|
244 iMark: 31 |
|
245 iAttr: a |
|
246 iExeCodeSeg: 64053b70 |
|
247 iAttachProcess: 00000000 |
|
248 iModuleVersion: a0000 |
|
249 iS: |
|
250 SecureId: 00000000, VendorId: 70000001 |
|
251 Caps: 000fffff 00000000 |
|
252 iSize: 370 |
|
253 |
|
254 iXIP: 1 |
|
255 iInfo: f83e3420 (TRomImageHeader*) |
|
256 iUid1: 1000007a, iUid2: 00000000, iUid3: 00000000 |
|
257 iUidChecksum: 045ac39e |
|
258 iEntryPoint: f83e3498 |
|
259 iCodeAddress: f83e3498, iCodeSize: 00000370 |
|
260 iDataAddress: 00000000, iDataSize: 00000000 |
|
261 iTextSize: 00000370, iBssSize: 00000000 |
|
262 iHeapSizeMin: 00001000, iHeapSizeMax: 00100000, iStackSize: 00002000 |
|
263 iDllRefTable: 00000000 |
|
264 iExportDirCount: 0, iExportDir: f83e33fc |
|
265 iS: |
|
266 SecureId: 00000000, VendorId: 70000001 |
|
267 Caps: 000fffff 00000000 |
|
268 iToolsVersion: Major 02 Minor 01 Build 0225 |
|
269 iFlags: 0000002a |
|
270 iPriority: 352 |
|
271 iDataBssLinearBase: 00400000 |
|
272 iNextExtension: 00000000 |
|
273 iHardwareVariant: 01000000 |
|
274 iTotalDataSize: 00000000 |
|
275 iModuleVersion: 000a0000 |
|
276 iExceptionDescriptor: f83e34f4 |
|
277 |
|
278 iCodeAllocBase: 80000000 |
|
279 iDataAllocBase: 80000000 |
|
280 iKernelData: 00000000</codeblock> </section> |
|
281 <section id="GUID-FB2E24A6-9744-5169-BA90-DDF84DF1D3E5"><title>c - display |
|
282 contents of object container</title> <p>This command in <i>lower case</i> displays |
|
283 the contents of one of the kernel's object containers, a <codeph>DObjectCon</codeph> type. |
|
284 Note that information is dumped very quickly without page breaks, which is |
|
285 useful in situations where the kernel is likely to become very unstable very |
|
286 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>, |
|
287 which generates output with a pause between pages. </p> <p>The command has |
|
288 the following syntax: </p> <codeblock id="GUID-71EF50B9-1612-57CA-840D-F142CF5EE88E" xml:space="preserve">c type</codeblock> <p>where <codeph>type</codeph> is |
|
289 a single hexadecimal digit between 0 and D inclusive that specifies which |
|
290 kernel container is to be dumped. The mapping between the hexadecimal digit |
|
291 and the kernel container is: </p> <table id="GUID-B1F908E6-0492-507E-BDAC-D010A1C4E231"> |
|
292 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
293 <tbody> |
|
294 <row> |
|
295 <entry><p>0</p> </entry> |
|
296 <entry><p>Threads </p> </entry> |
|
297 </row> |
|
298 <row> |
|
299 <entry><p>1</p> </entry> |
|
300 <entry><p>Processes </p> </entry> |
|
301 </row> |
|
302 <row> |
|
303 <entry><p>2</p> </entry> |
|
304 <entry><p>Chunks </p> </entry> |
|
305 </row> |
|
306 <row> |
|
307 <entry><p>3</p> </entry> |
|
308 <entry><p>Libraries </p> </entry> |
|
309 </row> |
|
310 <row> |
|
311 <entry><p>4</p> </entry> |
|
312 <entry><p>Semaphores </p> </entry> |
|
313 </row> |
|
314 <row> |
|
315 <entry><p>5</p> </entry> |
|
316 <entry><p>Mutexes </p> </entry> |
|
317 </row> |
|
318 <row> |
|
319 <entry><p>6</p> </entry> |
|
320 <entry><p>Timers </p> </entry> |
|
321 </row> |
|
322 <row> |
|
323 <entry><p>7</p> </entry> |
|
324 <entry><p>Servers </p> </entry> |
|
325 </row> |
|
326 <row> |
|
327 <entry><p>8</p> </entry> |
|
328 <entry><p>Sessions </p> </entry> |
|
329 </row> |
|
330 <row> |
|
331 <entry><p>9</p> </entry> |
|
332 <entry><p>LogicalDevices </p> </entry> |
|
333 </row> |
|
334 <row> |
|
335 <entry><p>A</p> </entry> |
|
336 <entry><p>PhysicalDevices </p> </entry> |
|
337 </row> |
|
338 <row> |
|
339 <entry><p>B</p> </entry> |
|
340 <entry><p>Channels </p> </entry> |
|
341 </row> |
|
342 <row> |
|
343 <entry><p>C</p> </entry> |
|
344 <entry><p>ChangeNotifiers </p> </entry> |
|
345 </row> |
|
346 <row> |
|
347 <entry><p>D</p> </entry> |
|
348 <entry><p>Undertakers </p> </entry> |
|
349 </row> |
|
350 <row> |
|
351 <entry><p>E</p> </entry> |
|
352 <entry><p>Message queues </p> </entry> |
|
353 </row> |
|
354 <row> |
|
355 <entry><p>F</p> </entry> |
|
356 <entry><p>Property references </p> </entry> |
|
357 </row> |
|
358 </tbody> |
|
359 </tgroup> |
|
360 </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: |
|
361 PHYSICAL DEVICE at 64032dac VPTR=f805d9fc AccessCount=2 Owner=00000000 |
|
362 Full name Media.IRam |
|
363 PHYSICAL DEVICE at 640339e8 VPTR=f8067e44 AccessCount=2 Owner=00000000 |
|
364 Full name Media.Flash |
|
365 PHYSICAL DEVICE at 64033a64 VPTR=f806b9f8 AccessCount=2 Owner=00000000 |
|
366 Full name Media.Ata |
|
367 </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: |
|
368 THREAD at 807011c0 VPTR=50052b04 AccessCount=1 Owner=8070107c |
|
369 Full name EKern::Null |
|
370 Thread MState READY |
|
371 Default priority 0 WaitLink Priority 0 |
|
372 ExitInfo 3,0, |
|
373 Flags 0000000c, Handles 80701520 |
|
374 Supervisor stack base 80700000 size 1000 |
|
375 User stack base 00000000 size 0 |
|
376 Id=0, Heap=00000000, Created heap=00000000, Frame=00000000 |
|
377 Trap handler=00000000, ActiveScheduler=00000000, Exception |
|
378 handler=00000000 |
|
379 TempObj=00000000 TempAlloc=00000000 |
|
380 NThread @ 8070147c Pri 0 NState READY |
|
381 Next=8070147c Prev=8070147c Att=00 ExcInUserMode=00 |
|
382 HeldFM=00000000 WaitFM=00000000 AddrSp=8070107c |
|
383 Time=-1 Timeslice=-1 ReqCount=0 |
|
384 SuspendCount=0 CsCount=0 CsFunction=00000000 |
|
385 SavedSP=80700f50 |
|
386 CAR 00000001 |
|
387 DACR 55555547 |
|
388 R13_USR 00403ed4 R14_USR 500c88b4 SPSR_SVC 200000d3 |
|
389 R4 00000009 R5 5004b7ec R6 50000000 R7 dc911000 |
|
390 R8 00000000 R9 807103c0 R10 50002140 R11 80700fb4 |
|
391 PC 500481b4 |
|
392 </codeblock> <p>The information displayed for each object is the same as that |
|
393 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. |
|
394 After displaying the information for each object, the debugger pauses until |
|
395 you press a key. </p> <p>Notes </p> <ul> |
|
396 <li id="GUID-63AF0857-4C02-5F39-8CB2-E57E11727F92"><p>the <codeph>DObjectCon</codeph> class |
|
397 is internal to Symbian platform. </p> </li> |
|
398 <li id="GUID-827905CF-C25F-56D6-B40B-416C3DA1C5CB"><p>the type value passed |
|
399 as an argument to the command is one of the enum values of the <codeph>TObjectType</codeph> enum; |
|
400 this enum is internal to Symbian platform. </p> </li> |
|
401 </ul> </section> |
|
402 <section id="GUID-55EF66A9-684F-50DA-8E2B-FA00B3D4FB6C"><title>C - display |
|
403 contents of object container</title> <p>This command in <i>upper case</i> is |
|
404 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 |
|
405 except that the display of output pauses between pages. If you need to dump |
|
406 output as fast as possible without pauses, use the lower case version. </p> </section> |
|
407 <section id="GUID-0CDF0190-A445-526B-AC1F-D9D58095B18B"><title>r - dump register |
|
408 contents</title> <p>This command dumps the full ARM register set. </p> <p>On |
|
409 ARM this dumps the full set of user mode registers and all the alternate registers |
|
410 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: |
|
411 R0=6571de54 R1=0000002a R2=00000002 R3=ffffffff |
|
412 R4=0000002a R5=f8170414 R6=6571df14 R7=6403cba8 |
|
413 R8=00000001 R9=6403c41c R10=640002f8 R11=6571de70 |
|
414 R12=00000020 R13=00404e00 R14=f80818c0 R15=f800bfa8 |
|
415 CPSR=60000013 |
|
416 MODE_FIQ: |
|
417 R8=00000000 R9=ffffffff R10=ffffffff R11=00000000 |
|
418 R12=00000000 R13=64000d0c R14=c080079c SPSR=e00000dc |
|
419 MODE_IRQ: |
|
420 R13=6400110c R14=00000013 SPSR=20000013 |
|
421 MODE_SVC: |
|
422 R13=6571de54 R14=f80328bc SPSR=60000010 |
|
423 MODE_ABT: |
|
424 R13=6400090c R14=ffff0010 SPSR=400000d7 |
|
425 MODE_UND: |
|
426 R13=6400090c R14=95221110 SPSR=f000009d |
|
427 </codeblock> </section> |
|
428 <section id="GUID-5693700E-6401-56B1-9817-AE0C3A81B42D"><title>S - Dumps thread |
|
429 stack contents</title> <p>This command, in upper case, dumps both the user |
|
430 and supervisor stacks used by each thread in the system. Some threads do not |
|
431 have a user thread, in which case this is indicated. Each set of stacks is |
|
432 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 |
|
433 Full name efile.exe::LoaderThread |
|
434 User stack base at 00410000, size == 1000 |
|
435 Stack pointer == 00413e30 |
|
436 Stack mapped at 00410000 |
|
437 00413e30: 10 01 70 01 99 93 1b 80 18 01 70 01 d0 56 1b 80 ..p.......p..V.. |
|
438 00413e40: 00 00 00 00 00 00 00 00 84 00 70 01 84 00 70 01 ..........p...p. |
|
439 00413e50: 04 00 00 00 23 91 1b 80 38 01 70 01 10 01 70 01 ....#...8.p...p. |
|
440 00413e60: 80 3e 41 00 01 00 00 00 10 01 70 01 00 00 00 00 .>A.......p..... |
|
441 00413e70: 84 00 70 01 cd 91 1b 80 30 02 70 01 00 00 00 00 ..p.....0.p..... |
|
442 |
|
443 Supervisor stack base at c9127000, size == 1000 |
|
444 Stack pointer == c9127fbc |
|
445 c9127fb0: b0 d1 0a c8 0c 00 00 00 13 00 00 00 00 07 00 00 ................ |
|
446 c9127fc0: 00 00 f0 00 45 55 55 55 30 3e 41 00 89 ff 1b 80 ....EUUU0>A..... |
|
447 c9127fd0: 10 00 00 20 10 01 70 01 80 3e 41 00 98 c7 23 80 ... ..p..>A...#. |
|
448 c9127fe0: 58 3e 41 00 04 00 00 00 40 00 00 00 98 4b 04 c8 X>A.....@....K.. |
|
449 c9127ff0: 60 04 00 c8 98 01 02 80 00 00 00 00 10 5a 1b 80 `............Z..</codeblock> <p><note> With |
|
450 a multiple memory model, this command is the only way to reliably dump a stack. </note></p> </section> |
|
451 <section id="GUID-8F9BAB99-8B88-5120-A95E-A22404110BAE"><title>x - leave debugger, |
|
452 cold restart of ROM image</title> <p>This command, in lower case, leaves the |
|
453 debugger and does a cold restart of the current ROM image. </p> </section> |
|
454 <section id="GUID-4E12A080-AC83-5872-A66D-4C14A65C5CFA"><title>X - leave debugger, |
|
455 return to bootloader</title> <p>This command, in upper case, leaves the debugger, |
|
456 and returns to the bootloader to wait for a new ROM image to be downloaded. </p> </section> |
|
457 <section id="GUID-190C956D-4F57-593B-B3B1-958B6CAE1267"><title>h - Help</title> <p>Displays |
|
458 a short summery of the crash debugger commands. </p> </section> |
|
459 </conbody></concept> |