Creating this topic to catch any typos and bugs in the 4th Edition of Advanced Apple Debugging & Reverse Engineering.
Chapter 5, p. 89, first line into Section âModifying an Objectâs Descriptionâ, should be âneedâ instead of âneedsâ
Chapter 5, p. 89, last line, should be âMasterViewControllerâ instead of âMainViewControllerâ.
EDIT: I noticed it has been changed to âMainâ in the code for the other chapters, but in Chapter 5 it is still called âMasterâ in the Xcode project files.
(page numbers referring to PDF version)
I noticed that this Erratum thread is going to be closed in a few days - wouldnât it be good to keep it open at least until a new edition is released?
Chapter 5, p. 92, when the code âp selfâ is executed in the debugger, the output automatically sets a variable $R2.
This is not consistent with what happens in my debugger, where no variable is created. Is this perhaps a leftover text from the 3rd edition, or could you confirm that this is how it still works?
Chapter 11, p. 176, there is still a mention of register RSI, which is a left-over from the (Intel) 3rd edition.
Should be X1 now.
Chapter 11, p. 185, mention of RDX should be X2 now.
The chapter on Objective-C method swizzling is missing from the 4th edition (at least in my download). Is that on purpose?
It was Chapter 17 in the 3rd edition.
Hi @hackvlix,
Thanks for the question. Unfortunately, there was a decision to not include that chapter due to time constraints with the update. I understand if youâre bummed about the decision and appreciate your flexibility with this change.
Best,
Gina
Ok, itâs just confusing because the past paragraph in Chapter 16 (p. 280) still refers to this chapter.
Chapter 22, p. 377 of the pdf: In the Python command âgdocumentationâ, the unichr
need to be replaced by chr
for Python3.
Chapter 23, p. 397: The help text ââââŠâââ for the function generateOptionParser
makes no sense. It was copy-and-pasted from an older version of the script.
Chapter 27, p. 494 of pdf: In the final code listing on the page, the sbt.
should not be there. This should only be added in the subsequent listing.
Chapter 29, p. 536 of pdf: Apparently dtrace now spots destructive actions and blocks them. Upon execution of the dtrace command on this page, I get an error âDestructive actions not allowed
â.
Chapter 5, User Defined Variables: Acoording Xcode15 release notes, * The p
and po
command aliases have been redefined to the new dwim-print
command. The dwim-print
command prints values using the most user friendly implementation. âDWIMâ is an acronym for âDo What I Meanâ. Specifically, when printing variables, dwim-print
will use the same implementation as frame variable
or v
.The output of p
no longer includes a persistent result variable, such as $0
, $R0
, etc. Users who want persistent results on occasion, can use expression
(or a unique prefix such as expr
) directly instead of p
. To enable persistent results every time, the p
alias can be redefined in the ~/.lldbinit
file:
command unalias p
command alias p dwim-print --persistent-result on --
The dwim-print
also gives po
new functionality. The po
command can now print Swift objects by their address. When running po <object-address>
, the embedded Swift compiler will instead evaluate the expression unsafeBitCast(<object-address>, to: AnyObject.self)
. (104348863)