3.2.7
Checking Arguments Passed to an Extension ............... 3–7
3.2.8
Checking the Fields in a Structure ............................
3–7
3.2.9
Setting the kdbx Context .......................................
3–8
3.2.10
Passing Commands to the dbx Debugger ..................... 3–9
3.2.11
Dereferencing a Pointer .........................................
3–9
3.2.12
Displaying the Error Messages Stored in Fields ............
3–10
3.2.13
Converting a Long Address to a String Address ............ 3–10
3.2.14
Freeing Memory ..................................................
3–11
3.2.15
Passing Commands to the kdbx Debugger ................... 3–11
3.2.16
Getting the Address of an Item in a Linked List ............ 3–13
3.2.17
Passing an Extension to kdbx .................................. 3–14
3.2.18
Getting the Next Token as an Integer ........................ 3–14
3.2.19
Getting the Next Token as a String ........................... 3–15
3.2.20
Displaying a Message ........................................... 3–16
3.2.21
Displaying Status Messages .................................... 3–16
3.2.22
Exiting from an Extension ...................................... 3–17
3.2.23
Reading the Values in Structure Fields ...................... 3–17
3.2.24
Returning a Line of kdbx Output .............................. 3–18
3.2.25
Reading an Area of Memory .................................... 3–18
3.2.26
Reading the Response to a kdbx Command .................. 3–19
3.2.27
Reading Symbol Representations .............................. 3–20
3.2.28
Reading a Symbol’s Address .................................... 3–20
3.2.29
Reading the Value of a Symbol ................................. 3–21
3.2.30
Getting the Address of a Data Representation .............. 3–21
3.2.31
Converting a String to a Number .............................. 3–22
3.3
Examples of kdbx Extensions ....................................... 3–22
3.4
Compiling Custom Extensions ...................................... 3–35
3.5
Debugging Custom Extensions ..................................... 3–36
4 Crash Analysis Examples
4.1
Guidelines for Examining Crash Dump Files .................... 4–1
4.2
Identifying a Crash Caused by a Software Problem ............. 4–2
4.2.1
Using dbx to Determine the Cause of a Software Panic ... 4–2
4.2.2
Using kdbx to Determine the Cause of a Software Panic .. 4–3
4.3
Identifying a Hardware Exception ................................. 4–4
4.3.1
Using dbx to Determine the Cause of a Hardware Error .. 4–4
4.3.2
Using kdbx to Determine the Cause of a Hardware Error 4–7
4.4
Finding a Panic String in a Thread Other Than the Current
Thread .................................................................. 4–8
4.5
Identifying the Cause of a Crash on an SMP System ........... 4–9
Contents v