Software exorcism: a handbook for debugging and optimizing legacy code
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Berkeley, Calif.
Apress
2003
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XXIII, 351 S. Ill., graph. Darst. |
ISBN: | 1590592344 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV019992165 | ||
003 | DE-604 | ||
005 | 20050823 | ||
007 | t | ||
008 | 050808s2003 ad|| |||| 00||| eng d | ||
015 | |a bA3U2477 |2 dnb | ||
020 | |a 1590592344 |9 1-59059-234-4 | ||
035 | |a (OCoLC)249080819 | ||
035 | |a (DE-599)BVBBV019992165 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
049 | |a DE-634 |a DE-11 | ||
050 | 0 | |a QA76.9.D43 | |
082 | 0 | |a 005.14 |2 21 | |
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
100 | 1 | |a Blunden, Bill |e Verfasser |4 aut | |
245 | 1 | 0 | |a Software exorcism |b a handbook for debugging and optimizing legacy code |c Bill Blunden |
264 | 1 | |a Berkeley, Calif. |b Apress |c 2003 | |
300 | |a XXIII, 351 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 4 | |a Debugging in computer science | |
650 | 0 | 7 | |a Verbesserung |0 (DE-588)4309013-8 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Software Engineering |0 (DE-588)4116521-4 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Debugging |0 (DE-588)4148954-8 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmcode |0 (DE-588)4734701-6 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Software Engineering |0 (DE-588)4116521-4 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Programmcode |0 (DE-588)4734701-6 |D s |
689 | 1 | 1 | |a Verbesserung |0 (DE-588)4309013-8 |D s |
689 | 1 | 2 | |a Debugging |0 (DE-588)4148954-8 |D s |
689 | 1 | |8 1\p |5 DE-604 | |
856 | 4 | 2 | |m HEBIS Datenaustausch Darmstadt |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=013314041&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-013314041 | ||
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk |
Datensatz im Suchindex
_version_ | 1804133538915680256 |
---|---|
adam_text | SOFTWARE EXORCISM: A HANDBOOK FOR DEBUGGING AND OPTIMIZING LEGACY CODE
BILL BLUNDEN APRESS* CONTENTS ABOUT THE AUTHOR XI ACKNOWLEDGMENTS XIII
INTRODUCTION XV CHAPTER 1 PREVENTATIVE MEDICINE 1 1.1 CORE PROBLEMS 2
1.1.1 TIME TO MARKET PRESSURE 3 1.1.2 FLUID SPECIFICATIONS 5 1.1.3 TRADE
FEATURES FOR TIME 6 1.1.4 GET IT IN WRITING 7 1.1.5 COMPLEXITY 10 1.2
DEFENSIVE PROGRAMMING .12 1.2.1 COHESION AND COUPLING 12 1.2.2 CHECKING
FOR BAD INPUT 16 1.2.3 DATA SCOPE 23 1.2.4 LOGGING 26 1.2.5
DOCUMENTATION 36 1.2.6 DESIGN FOR CHANGE 39 1.2.7 INCREMENTAL REFINEMENT
42 1.3 UNIT TESTING 43 1.3.1 MOTIVATION BEHIND AUTOMATED TESTING 44
1.3.2 STEPS TOWARDS A FRAMEWORK 47 1.3.3 FRAMEWORK EXTENSIONS 53 1.4
TOOL CONFIGURATION 57 1.4.1 USE COMPILER WARNINGS 57 1.4.2 BUILD
SETTINGS 59 1.5 MACHINE DEPENDENCIES 61 1.5.1 ENDIANESS 61 1.5.2 MEMORY
ALIGNMENT 62 1.5.3 DATA TYPE SIZES 64 1.5.4 THE BENEFITS OF AVIRTUAL
MACHINE 66 1.6 SUMMARY 67 THE BOTTOM LINE: WHY DO BUGS OCCUR? 67
REFINEMENT CHECKLIST: PROACTIVE BUG PREVENTION 68 CONTENTS CHAPTER 2
DEBUGGING TACTICS 71 2.1 INITIAL STEPS 72 2.1.1 DUPLICATE THE BUG 72
2.1.2 BUGS THAT CAN T BE DUPLICATED 72 2.1.3 VERIFY THE BUG IS GENUINE
77 2. 2 RESOLVING THE BUG: QUICK FIXES 78 2.2.1 EXAMINE RECENT CHANGES
78 2.2.2 USE TRACING INFORMATION 79 2.2.3 DEJAVU 79 2.2 A KNOW WHEN TO
QUIT 80 2.3 RESOLVING THE BUG: THE SCIENTIFIC METHOD. 80 2.3.1 GENERAL
APPROACH 80 2.3.2 LOCATING THE BUG: INCREMENTAL INTEGRATION 82 2.3.3
LOCATING THE BUG: BINARY SEARCH ..83 2.3A UNDERSTAND THE PROBLEM 84
2.3.5 PREVENTING CARELESS ERRORS 86 2.3.6 DIAGNOSTIC TOOLS 88 2.3.7
BASIC DEBUGGER OPERATION 98 2.4 RECORD KEEPING 105 2.4.1 INDIVIDUAL
RECORD KEEPING 105 2.4.2 COLLABORATIVE RECORD KEEPING 106 2. 5 SUMMARY
110 CHAPTER 3 UNDERSTAND THE PROBLEM 113 3.1 HOW KNOWLEDGE IS LOST
....114 3.1.1 COMPETITION 115 3.1.2 ATTRITION 118 3.1.3 PROMOTION 119
3.2 POORLY WRITTEN CODE 120 3.2.1 DESIGN PROBLEMS 121 3.2.2 OBFUSCATION
125 3.2.3 MISLEADING CODE 136 3.3 REVERSE ENGINEERING 138 3.3.1 GENERAL
STRATEGIES 138 3.3.2 COUNTERMEASURES 146 3.3.3 CREATING A KNOWLEDGE BASE
153 3.4 SUMMARY 156 VI CONTENTS CHAPTER 4 DEBUGGER INTERNALS 157 4.1
TYPES OF DEBUGGERS 158 4.1.1 MACHINE DEBUGGERS VS. SYMBOLIC DEBUGGERS
158 4.1.2 DEBUGGING INFRASTRUCTURES: CUSTOM BUILT 165 4.1.3 DEBUGGING
INFRASTRUCTURES: SYSTEM CALLS 178 4.1.4 DEBUGGING INFRASTRUCTURES:
INTERPRETERS 195 4.1.5 KERNEL DEBUGGERS 199 4.1.6 INTERFACE: COMMAND
LINE VS. GUI 202 4.2 SYMBOLIC DEBUGGER EXTENSIONS 203 4.2.1 DYNAMIC
BREAKPOINTS 203 4.2.2 SINGLE STEPPING 204 4.3 COUNTERTACTICS 206 4.3.1
SYSTEM CALLS 206 4.3.2 REMOVE DEBUG INFORMATION 207 4.3.3 CODE SALTING
209 4.3.4 MIXED MEMORY MODELS 210 4.4 SUMMARY 211 CHAPTER 5
OPTIMIZATION: MEMORY FOOTPRINT 215 5.1 FORGOTTEN HISTORY 217 5.2 PROGRAM
LAYOUT IN MEMORY 219 5.2.1 SCENARIO: A SINGLE SEGMENT 220 5.2.2
SCENARIO: CODE AND DATA SEGMENTS ONLY 222 5.2.3 SCENARIO: ALL FOUR
SEGMENT TYPES 223 5.3 CODE SEGMENT 224 5.3.1 CUT-AND-PASTE PROGRAMMING
225 5.3.2 MACROS 228 5.3.3 DEAD CODE 230 5.4 DATA SEGMENT 231 5.4.1
DUAL-USE DATA STRUCTURES 231 5.4.2 BIT FIELDS 233 5.4.3 COMPRESSION
ALGORITHMS 235 5.5 STACK SEGMENT 238 5.5.1 ACTIVATION RECORDS 239 5.5.2
FUNCTION PARAMETERS 245 5.5.3 LOCAL VARIABLES 247 VU CONTENTS 5.6 HEAP
248 5.6.1 MEMORY POOLS 249 5.6.2 RECYCLING , 254 5.6.3 LAZY
INSTANTIATION 255 5.6.4 TRACKING MEMORY USAGE 258 5.7 SUMMARY 260
CHAPTER 6 OPTIMIZATION: CPU CYCLES 263 6.1 PROGRAM CONTROL JUMPS 264
6.1.1 LABELS AND GOTO 264 6.1.2 FUNCTION PARAMETERS 266 6.1.3 FUNCTIONS
WITH A VARYING NUMBER OF ARGUMENTS 268 6.1.4 SYSTEM CALLS 269 6.1.5
RECURSION 274 6.2 PROGRAM CONTROL BRANCHING 274 6.2.1 LOOKUP TABLES 275
6.2.2 SWITCH VS. IF-ELSE 277 6.2.3 COMMON CASE FIRST, INFREQUENT CASE
LAST 279 6.3 PROGRAM CONTROL LOOPS 280 6.3.1 LOOP INVARIANTS 280 6.3.2
FUNCTION CALLS 282 6.3.3 ARRAY REFERENCES 283 6.3.4 BREAKING UP COMPOUND
BOOLEAN EXPRESSIONS 285 6.3.5 LOOP UNROLLING 286 6.3.6 LOOP JAMMING 286
6.3.7 EXTRACTING PROGRAM BRANCHING STATEMENTS 287 6.4 MEMORY MANAGEMENT
288 6.4.1 DEALING WITH THE OVERHEAD 288 6.4.2 LOCALITY OF REFERENCE 292
6.5 INPUT/OUTPUT 294 6.5.1 CACHING 295 6.5.2 BUFFERING 296 6.5.3
ADVANCED TECHNIQUES 298 6.6 EXCEPTIONS 301 6.6.1 DYNAMIC REGISTRATION
MODEL 304 6.6.2 STATIC TABLE MODEL 305 6.6.3 DEALING WITH OVERHEAD 306
6.6.4 ABUSING EXCEPTIONS 308 VUI CONTENTS 6.7 EXPENSIVE OPERATIONS 308
6.7.1 ELIMINATE COMMON SUBEXPRESSIONS 308 6.7.2 FLOATING POINT
CALCULATION MYTHS 309 6.7.3 STRENGTH REDUCTION 311 6.7 A SYNCHRONIZATION
311 6.7.5 SHORTHAND OPERATOR MYTHS 315 6.8 QUICK FIXES 316 6.8.1 BETTER
HARDWARE 316 6.8.2 CONSTRAIN THE PROBLEM 316 6.8.3 COMPILER SETTINGS 317
6.9 SUMMARY 318 6.10 PUTTING IT ALL TOGETHER ...320 CHAPTER 7 FINAL
WORDS OF ADVICE 321 7.1 OTHER THREATS TO SOURCE CODE INTEGRITY 322
FASHIONABLE TECHNOLOGY: A CASE STUDY 323 BRAINWASHING 101 324 THE REAL
ISSUE 324 1.2 MAINTAINING A PAPER TRAIL 325 QUIETLY KEEP RECORDS 325 THE
MYTH OF PRIVACY 326 7.3 HISTORY REPEATS ITSELF 327 THE NEW ECONOMY
HITS HOME 328 INDEX 331 IX
|
any_adam_object | 1 |
author | Blunden, Bill |
author_facet | Blunden, Bill |
author_role | aut |
author_sort | Blunden, Bill |
author_variant | b b bb |
building | Verbundindex |
bvnumber | BV019992165 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.9.D43 |
callnumber-search | QA76.9.D43 |
callnumber-sort | QA 276.9 D43 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 230 |
ctrlnum | (OCoLC)249080819 (DE-599)BVBBV019992165 |
dewey-full | 005.14 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.14 |
dewey-search | 005.14 |
dewey-sort | 15.14 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01787nam a2200457 c 4500</leader><controlfield tag="001">BV019992165</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20050823 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">050808s2003 ad|| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">bA3U2477</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">1590592344</subfield><subfield code="9">1-59059-234-4</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)249080819</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV019992165</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-634</subfield><subfield code="a">DE-11</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.9.D43</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.14</subfield><subfield code="2">21</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Blunden, Bill</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Software exorcism</subfield><subfield code="b">a handbook for debugging and optimizing legacy code</subfield><subfield code="c">Bill Blunden</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Berkeley, Calif.</subfield><subfield code="b">Apress</subfield><subfield code="c">2003</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXIII, 351 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Debugging in computer science</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Verbesserung</subfield><subfield code="0">(DE-588)4309013-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Debugging</subfield><subfield code="0">(DE-588)4148954-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">Verbesserung</subfield><subfield code="0">(DE-588)4309013-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="2"><subfield code="a">Debugging</subfield><subfield code="0">(DE-588)4148954-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HEBIS Datenaustausch Darmstadt</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=013314041&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-013314041</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield></record></collection> |
id | DE-604.BV019992165 |
illustrated | Illustrated |
indexdate | 2024-07-09T20:10:19Z |
institution | BVB |
isbn | 1590592344 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-013314041 |
oclc_num | 249080819 |
open_access_boolean | |
owner | DE-634 DE-11 |
owner_facet | DE-634 DE-11 |
physical | XXIII, 351 S. Ill., graph. Darst. |
publishDate | 2003 |
publishDateSearch | 2003 |
publishDateSort | 2003 |
publisher | Apress |
record_format | marc |
spelling | Blunden, Bill Verfasser aut Software exorcism a handbook for debugging and optimizing legacy code Bill Blunden Berkeley, Calif. Apress 2003 XXIII, 351 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Debugging in computer science Verbesserung (DE-588)4309013-8 gnd rswk-swf Software Engineering (DE-588)4116521-4 gnd rswk-swf Debugging (DE-588)4148954-8 gnd rswk-swf Programmcode (DE-588)4734701-6 gnd rswk-swf Software Engineering (DE-588)4116521-4 s DE-604 Programmcode (DE-588)4734701-6 s Verbesserung (DE-588)4309013-8 s Debugging (DE-588)4148954-8 s 1\p DE-604 HEBIS Datenaustausch Darmstadt application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=013314041&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk |
spellingShingle | Blunden, Bill Software exorcism a handbook for debugging and optimizing legacy code Debugging in computer science Verbesserung (DE-588)4309013-8 gnd Software Engineering (DE-588)4116521-4 gnd Debugging (DE-588)4148954-8 gnd Programmcode (DE-588)4734701-6 gnd |
subject_GND | (DE-588)4309013-8 (DE-588)4116521-4 (DE-588)4148954-8 (DE-588)4734701-6 |
title | Software exorcism a handbook for debugging and optimizing legacy code |
title_auth | Software exorcism a handbook for debugging and optimizing legacy code |
title_exact_search | Software exorcism a handbook for debugging and optimizing legacy code |
title_full | Software exorcism a handbook for debugging and optimizing legacy code Bill Blunden |
title_fullStr | Software exorcism a handbook for debugging and optimizing legacy code Bill Blunden |
title_full_unstemmed | Software exorcism a handbook for debugging and optimizing legacy code Bill Blunden |
title_short | Software exorcism |
title_sort | software exorcism a handbook for debugging and optimizing legacy code |
title_sub | a handbook for debugging and optimizing legacy code |
topic | Debugging in computer science Verbesserung (DE-588)4309013-8 gnd Software Engineering (DE-588)4116521-4 gnd Debugging (DE-588)4148954-8 gnd Programmcode (DE-588)4734701-6 gnd |
topic_facet | Debugging in computer science Verbesserung Software Engineering Debugging Programmcode |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=013314041&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT blundenbill softwareexorcismahandbookfordebuggingandoptimizinglegacycode |