Why programs fail: a guide to systematic debugging
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Amsterdam [u.a.]
Elsevier [u.a.]
2009
|
Ausgabe: | 2. ed. |
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | XXIII, 400 S. Ill., graph. Darst. |
ISBN: | 9780123745156 0123745152 9783898646208 3898646203 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV024629576 | ||
003 | DE-604 | ||
005 | 20141008 | ||
007 | t | ||
008 | 090924s2009 ne ad|| |||| 00||| eng d | ||
015 | |a 09N170052 |2 dnb | ||
016 | 7 | |a 99363401X |2 DE-101 | |
020 | |a 9780123745156 |9 978-0-12-374515-6 | ||
020 | |a 0123745152 |9 0-12-374515-2 | ||
020 | |a 9783898646208 |9 978-3-89864-620-8 | ||
020 | |a 3898646203 |9 3-89864-620-3 | ||
035 | |a (OCoLC)436276291 | ||
035 | |a (DE-599)BSZ290215668 | ||
040 | |a DE-604 |b ger |e rakwb | ||
041 | 0 | |a eng | |
044 | |a ne |c XA-NL | ||
049 | |a DE-83 |a DE-634 |a DE-29T |a DE-Aug4 |a DE-11 |a DE-860 |a DE-898 |a DE-739 |a DE-91 |a DE-523 |a DE-473 | ||
050 | 0 | |a QA76.9.D43 | |
082 | 0 | |a 004 | |
084 | |a ST 233 |0 (DE-625)143620: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
084 | |a DAT 330f |2 stub | ||
100 | 1 | |a Zeller, Andreas |e Verfasser |4 aut | |
245 | 1 | 0 | |a Why programs fail |b a guide to systematic debugging |c Andreas Zeller |
250 | |a 2. ed. | ||
264 | 1 | |a Amsterdam [u.a.] |b Elsevier [u.a.] |c 2009 | |
300 | |a XXIII, 400 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 4 | |a Debugging | |
650 | 4 | |a Debugging in computer science | |
650 | 0 | 7 | |a Debugging |0 (DE-588)4148954-8 |2 gnd |9 rswk-swf |
655 | 7 | |0 (DE-588)4123623-3 |a Lehrbuch |2 gnd-content | |
689 | 0 | 0 | |a Debugging |0 (DE-588)4148954-8 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=3281178&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext | |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018601182&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-018601182 |
Datensatz im Suchindex
_version_ | 1805092980332167168 |
---|---|
adam_text |
Titel: Why programs fail
Autor: Zeller, Andreas
Jahr: 2009
Contents
Foreword xv
Preface xvii
CHAPTER 1 How Failures Come to Be 1
1.1 My Program Does Not Work! 1
1.2 From Defects to Failures 2
1.3 Lost in Time and Space 5
1.4 From Failures to Fixes 8
1.4.1 Track the Problem 8
1.4.2 Reproduce the Failure 9
1.4.3 Automate and Simplify the Test Case 9
1.4.4 Find Possible Infection Origins 9
1.4.5 Focus on the Most Likely Origins 12
1.4.6 Isolate the Origin of the Infection 12
1.4.7 Correct the Defect 13
1.5 Automated Debugging Techniques 14
1.6 Bugs, Faults, or Defects? 18
1.7 Concepts 19
How to debug a program 20
1.8 Tools 20
1.9 Further Reading 21
Exercises 22
CHAPTER 2 Tracking Problems 25
2.1 Oh! All These Problems 25
2.2 Reporting Problems 26
2.2.1 Problem Facts 26
2.2.2 Product Facts 28
2.2.3 Querying Facts Automatically 29
2.3 Managing Problems 31
2.4 Classifying Problems 32
2.4.1 Severity 33
2.4.2 Priority 33
2.4.3 Identifier 33
2.4.4 Comments 34
2.4.5 Notification 34
2.5 Processing Problems 34
2.6 Managing Problem Tracking 36
2.7 Requirements as Problems 37 y
2.8 Managing Duplicates 39
2.9 Relating Problems and Fixes 40
2.10 Relating Problems andTests 43
2.11 Concepts 44
How to obtain the relevant problem information 44
How to write an effective problem, report 44
How to organize the debugging process 44
How to track requirements 44
How to keep problem tracking simple 44
How to restore released versions 45
How to separate fixes and features 45
How to relate problems and fixes 45
How to relate problems and tests, make a problem
report obsolete 45
2.12 Tools 45
2.13 Further Reading 46
Exercises 46
CHAPTER 3 Making Programs Fail 49
3.1 Testing for Debugging 49
3.2 Controlling the Program 50
3.3 Testing at the Presentation Layer 53
3.3.1 Low-Level Interaction 53
3.3.2 System-Level Interaction 55
3.3.3 Higher-Level Interaction 55
3.3.4 Assessing Test Results 56
3.4 Testing at the Functionality Layer 57
3.5 Testing at the Unit Layer 59
3.6 Isolating Units 63
3.7 Designing for Debugging 66
3.8 Preventing Unknown Problems 69
3.9 Concepts 70
How to test for debugging 70
How to automate program execution 71
How to test at the presentation layer 71
How to test at the functionality layer 71
How to test at the unit layer 71
How to isolate a unit 71
How to design for debugging 71
How to prevent unknown problems 71
3.10 Tools 72
3.11 Further Reading 72
Exercises 73
CHAPTER 4 Reproducing Problems 75
4.1 The FirstTask in Debugging 75
4.2 Reproducing the Problem Environment 76
4.3 Reproducing Program Execution 78
4.3-1 Reproducing Data 80
4.3-2 Reproducing User Interaction 80
4.3-3 Reproducing Communications 82
4.3-4 Reproducing Time 83
4.3-5 Reproducing Randomness 83
4.3-6 Reproducing Operating Environments 84
4.3-7 Reproducing Schedules 86
4.3-8 Physical Influences 88
4.3.9 Effects of Debugging Tools 89
4.4 Reproducing System Interaction 90
4.5 Focusing on Units 91
4.5.1 Setting Up a Control Layer 92
4.5.2 A Control Example 92
4.5.3 Mock Objects 95
4.5-4 Controlling More Unit Interaction 97
4.6 Reproducing Crashes 97
4.7 Concepts 101
How to reproduce a problem 101
How to reproduce the problem environment 101
How to reproduce the problem execution 101
How to reproduce unit behavior 101
How to Mock objects 101
How to reproduce a crash 101
4.8 Tools 101
4.9 Further Reading 102
Exercises 102
CHAPTER 5 Simplifying Problems 105
5.1 Simplifying the Problem 105
5.2 The Gecko BugAThon 106
5.3 Manual Simplification 109
5.4 Automatic Simplification 110
5.5 A Simplification Algorithm 112
5.6 Simplifying User Interaction 117
5.7 Random Input Simplified 118
5.8 Simplifying Faster 119
5.8.1 Caching 119
5.8.2 Stop Early 120
5.8.3 Syntactic Simplification 120
5.8.4 Isolate Differences, Not Circumstances 121
5.9 Concepts 123
How to simplify a test case 123
How to automate simplification 123
How to speed up automatic simplification 123
5.10 Tools 123
5.11 Further Reading 123
Exercises 124
CHAPTER 6 Scientific Debugging 129
6.1 How to Become a Debugging Guru 129
6.2 The Scientific Method 130
6.3 Applying the Scientific Method 132
6.3.1 Debugging sampl e—Preparation 132
6.3-2 Debugging sampl e—Hypothesis 1 132
6.3-3 Debugging sampl e—Hypothesis 2 133
6.3-4 Debugging sampl e—Hypothesis 3 133
6.3.5 Debugging sampl e—Hypothesis 4 133
6.4 Explicit Debugging 134
6.5 Keeping a Logbook 135
6.6 Debugging Quick-and-Dirty 136
6.7 Algorithmic Debugging 137
6.8 Deriving a Hypothesis 140
6.8.1 The Description of the Problem 140
6.8.2 The Program Code 140
6.8.3 The Failing Run 140
6.8.4 Alternate Runs 141
6.8.5 Earlier Hypotheses 141
6.9 Reasoning about Programs 142
6.10 Concepts 144
How to isolate a failure cause 144
How to understand the problem at hand 144
How to avoid endless debugging sessions 144
How to locate an error in a functional or logical
program 144
How to debug quick-and-dirty 144
How to derive a hypothesis 144
How to reason about programs 144
6.11 Further Reading 144
Exercises 145
CHAPTER 7 Deducing Errors 147
7.1 Isolating Value Origins 147
7.2 Understanding Control Flow 148
7.3 Tracking Dependences 152
7.3.1 Effects of Statements 152
7.3.2 Affected Statements 153
7.3.3 Statement Dependences 154
7.3.4 Following Dependences 156
7.3.5 Leveraging Dependences 156
7.4 Slicing Programs 157
7.4.1 Forward Slices 157
7.4.2 Backward Slices 158
7.4.3 Slice Operations 158
7.4.4 Leveraging Slices 160
7.4.5 Executable Slices 160
7.5 Deducing Code Smells 161
7.5.1 Reading Uninitialized Variables 161
7.5.2 Unused Values 162
7.5.3 Unreachable Code 162
7.6 Limits of Static Analysis 166
7.7 Concepts 170
How to isolate value origins 170
How to slice a program 170
7.8 Tools 170
7.9 Further Reading 171
Exercises 171
CHAPTER 8 Observing Facts 175
8.1 Observing State 175
8.2 Logging Execution 176
8.2.1 Logging Functions 177
8.2.2 Logging Frameworks 180
8.2.3 Logging with Aspects 182
8.2.4 Logging at the Binary Level 186
8.3 Using Debuggers 188
8.3.1 A Debugging Session 189
8.3.2 Controlling Execution 192
8.3-3 Postmortem Debugging 192
8.3.4 Logging Data 193
8.3.5 Invoking Functions 194
8.3.6 Fix and Continue 194
8.3.7 Embedded Debuggers 194
8.3-8 Debugger Caveats 195
8.4 Querying Events 196
8.4.1 Watchpoints 196
8.4.2 Uniform Event Queries 197
8.5 Hooking into the Interpreter 199
8.6 Visualizing State 200
8.7 Concepts 202
How to observe state 203
How to encapsulate and reuse debugging code 203
How to observe the final state of a crashing program 203
How to automate observation 203
8.8 Tools 203
8.9 Further Reading 204
Exercises 204
CHAPTER 9 Tracking Origins 211
9.1 Reasoning Backward 211
9.2 Exploring Execution History 211
9.3 Dynamic Slicing 213
9.4 Leveraging Origins 216
9.5 Tracking Down Infections 219
9.6 Concepts 220
How to explore execution history 220
How to isolate value origins for a specific run 220
How to track down an infection 220
9.7 Tools 221
9.8 Further Reading 221
Exercises 221
CHAPTER 10 Asserting Expectations 223
10.1 Automating Observation 223
10.2 Basic Assertions 224
10.3 Asserting Invariants 226
10.4 Asserting Correctness 229
10.5 Assertions as Specifications 232
10.6 From Assertions to Verification 233
10.7 Reference Runs 235
10.8 System Assertions 238
10.8.1 Validating the Heap with MALLOC_CHECK_ 239
10.8.2 Avoiding Buffer Overflows with
ELECTRICFENCE 239
10.8.3 Detecting Memory Errors with VALGRIND 240
10.8.4 Language Extensions 241
10.9 Checking Production Code 242
10.10 Concepts 244
How to automate observation 244
How to use assertions 245
How to check a program against a reference program 245
How to check memory integrity 245
How to prevent memory errors in a low-level language. 245
10.11 Tools 245
10.12 Further Reading 246
Exercises 247
CHAPTER 11 Detecting Anomalies 253
11.1 Capturing Normal Behavior 253
11.2 Comparing Coverage 254
11.3 Statistical Debugging 259
11.4 Collecting Data in the Field 260
11.5 Dynamic Invariants 262
11.6 Invariants On-the-Fly 265
11.7 From Anomalies to Defects 266
11.8 Concepts 267
How to determine abnormal behavior 267
How to summarize behavior 267
How to detect anomalies 267
How to compare coverage 267
How to sample return values 267
How to collect data from the field 267
How to determine invariants 267
11.9 Tools 268
11.10 Further Reading 268
Exercises 269
CHAPTER 12 Causes and Effects 271
12.1 Causes and Alternate Worlds 271
12.2 Verifying Causes 272
12.3 Causality in Practice 273
12.4 Finding Actual Causes 275
12.5 Narrowing Down Causes 276
12.6 A Narrowing Example 277
12.7 The Common Context 277
12.8 Causes in Debugging 278
12.9 Concepts 279
How to show causality 279
How to find a cause 279
How to find an actual cause 279
12.10 Further Reading 279
Exercises 280
CHAPTER 13 Isolating Failure Causes 283
13.1 Isolating Causes Automatically 283
13.2 Isolating versus Simplifying 284
133 An Isolation Algorithm 286
13.4 Implementing Isolation 288
13.5 Isolating Failure-Inducing Input 290
13-6 Isolating Failure-Inducing Schedules 291
13.7 Isolating Failure-Inducing Changes 293
13.8 Problems and limitations 299
13-9 Concepts 301
How to isolate a failure cause in the input 301
How to isolate a failure cause in the thread schedule 301
How to isolate a failure-inducing code change 301
13.10 Tools 301
13.11 Further Reading 301
Exercises 302
CHAPTER 14 Isolating Cause-Effect Chains 305
14.1 Useless Causes 305
14.2 Capturing Program States 307
14.3 Comparing Program States 311
14.4 Isolating Relevant Program States 312
14.5 Isolating Cause-Effect Chains 316
14.6 Isolating Failure-Inducing Code 320
14.7 Issues and Risks 324
14.8 Concepts 326
How to understand how a failure cause propagates
through the program run 326
How to capture program states 326
How to compare program states 326
How to isolate failure-inducing program states 326
How to find the code that causes the failure 326
How to narrow down the defect along a cause-effect
chain 326
14.9 Tools 326
14.10 Further Reading 327
Exercises 327
CHAPTER 15 Fixing the Defect 329
15.1 Locating the Defect 329
15.2 Focusing on the Most Likely Errors 330
15.3 Validating the Defect 332
15.3.1 Does the Error Cause the Failure? 333
15.3-2 Is the Cause Really an Error? 333
15.3.3 Think Before You Code 335
15.4 Correcting the Defect 335
15.4.1 Does the Failure No Longer Occur? 336
15.4.2 Did the Correction Introduce New
Problems? 336
15.4.3 Was the Same Mistake Made Elsewhere? 337
15.4.4 Did I Do My Homework? 338
15.5 Workarounds 338
15.6 Concepts 339
How to isolate the infection chain 339
How to find the most likely origins 339
How to correct the defect 339
How to ensure your correction is successful 339
How to avoid introducing new problems 339
15.7 Further Reading 340
Exercises 340
CHAPTER 16 Learning from Mistakes 343
16.1 Where the DefectsAre 343
16.2 Mining the Past 344
16.3 Where Defects Come From 346
16.4 Errors during Specification 347
16.4.1 What You Can Do 347
16.4.2 What You Should Focus On 348
16.5 Errors during Programming 349
16.5.1 What You Can Do 349
16.5.2 What You Should Focus On 350
16.6 Errors during Quality Assurance 351
16.6.1 What You Can Do 352
16.6.2 What You Should Focus On 353
16.7 Predicting Problems 353
16.7.1 Predicting Errors from Imports 354
16.7.2 Predicting Errors from Change Frequency 355
16.7.3 A Cache for Bugs 355
16.7.4 Recommendation Systems 356
16.7.5 A Word of Warning 356
16.8 Fixing the Process 357
16.9 Concepts 359
How to learn from mistakes 359
How to map defects to components 359
How to reduce the risk of errors in specification 359
How to reduce the risk of errors in the code 359
How to reduce the risk of errors in quality assurance 359
How to allocate quality-assurance resources wisely 359
16.10 Further Reading 359
Exercises 360
APPENDIX Formal Definitions 363
A.1 Delta Debugging 363
A.1.1 Configurations 363
A.1.2 Passing and Failing Run 363
A.1.3 Tests 363
A.1.4 Minimality 364
A.1.5 Simplifying 364
A.1.6 Differences 364
A. 1,7 Isolating 365
A.2 Memory Graphs 365
A.2.1 Formal Structure 365
A.2.2 Unfolding Data Structures 367
A.2.3 Matching Vertices and Edges 368
A.2.4 Computing the Common Subgraph 368
A.2.5 Computing Graph Differences 369
A.2.6 Applying Partial State Changes 371
A.2.7 Capturing C State 372
A.3 Cause-Effect Chains 374
Glossary 377
Bibliography 381
Index 391 |
any_adam_object | 1 |
author | Zeller, Andreas |
author_facet | Zeller, Andreas |
author_role | aut |
author_sort | Zeller, Andreas |
author_variant | a z az |
building | Verbundindex |
bvnumber | BV024629576 |
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 233 |
classification_tum | DAT 330f |
ctrlnum | (OCoLC)436276291 (DE-599)BSZ290215668 |
dewey-full | 004 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 004 - Computer science |
dewey-raw | 004 |
dewey-search | 004 |
dewey-sort | 14 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 2. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV024629576</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20141008</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">090924s2009 ne ad|| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">09N170052</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">99363401X</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780123745156</subfield><subfield code="9">978-0-12-374515-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0123745152</subfield><subfield code="9">0-12-374515-2</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783898646208</subfield><subfield code="9">978-3-89864-620-8</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3898646203</subfield><subfield code="9">3-89864-620-3</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)436276291</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BSZ290215668</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakwb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">ne</subfield><subfield code="c">XA-NL</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-83</subfield><subfield code="a">DE-634</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-898</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-91</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-473</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">004</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 233</subfield><subfield code="0">(DE-625)143620:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 330f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Zeller, Andreas</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Why programs fail</subfield><subfield code="b">a guide to systematic debugging</subfield><subfield code="c">Andreas Zeller</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Amsterdam [u.a.]</subfield><subfield code="b">Elsevier [u.a.]</subfield><subfield code="c">2009</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXIII, 400 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</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">Debugging</subfield><subfield code="0">(DE-588)4148954-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="655" ind1=" " ind2="7"><subfield code="0">(DE-588)4123623-3</subfield><subfield code="a">Lehrbuch</subfield><subfield code="2">gnd-content</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Debugging</subfield><subfield code="0">(DE-588)4148954-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2=" "><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=3281178&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</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=018601182&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-018601182</subfield></datafield></record></collection> |
genre | (DE-588)4123623-3 Lehrbuch gnd-content |
genre_facet | Lehrbuch |
id | DE-604.BV024629576 |
illustrated | Illustrated |
indexdate | 2024-07-20T10:20:12Z |
institution | BVB |
isbn | 9780123745156 0123745152 9783898646208 3898646203 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-018601182 |
oclc_num | 436276291 |
open_access_boolean | |
owner | DE-83 DE-634 DE-29T DE-Aug4 DE-11 DE-860 DE-898 DE-BY-UBR DE-739 DE-91 DE-BY-TUM DE-523 DE-473 DE-BY-UBG |
owner_facet | DE-83 DE-634 DE-29T DE-Aug4 DE-11 DE-860 DE-898 DE-BY-UBR DE-739 DE-91 DE-BY-TUM DE-523 DE-473 DE-BY-UBG |
physical | XXIII, 400 S. Ill., graph. Darst. |
publishDate | 2009 |
publishDateSearch | 2009 |
publishDateSort | 2009 |
publisher | Elsevier [u.a.] |
record_format | marc |
spelling | Zeller, Andreas Verfasser aut Why programs fail a guide to systematic debugging Andreas Zeller 2. ed. Amsterdam [u.a.] Elsevier [u.a.] 2009 XXIII, 400 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Debugging Debugging in computer science Debugging (DE-588)4148954-8 gnd rswk-swf (DE-588)4123623-3 Lehrbuch gnd-content Debugging (DE-588)4148954-8 s DE-604 text/html http://deposit.dnb.de/cgi-bin/dokserv?id=3281178&prov=M&dok_var=1&dok_ext=htm Inhaltstext HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018601182&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Zeller, Andreas Why programs fail a guide to systematic debugging Debugging Debugging in computer science Debugging (DE-588)4148954-8 gnd |
subject_GND | (DE-588)4148954-8 (DE-588)4123623-3 |
title | Why programs fail a guide to systematic debugging |
title_auth | Why programs fail a guide to systematic debugging |
title_exact_search | Why programs fail a guide to systematic debugging |
title_full | Why programs fail a guide to systematic debugging Andreas Zeller |
title_fullStr | Why programs fail a guide to systematic debugging Andreas Zeller |
title_full_unstemmed | Why programs fail a guide to systematic debugging Andreas Zeller |
title_short | Why programs fail |
title_sort | why programs fail a guide to systematic debugging |
title_sub | a guide to systematic debugging |
topic | Debugging Debugging in computer science Debugging (DE-588)4148954-8 gnd |
topic_facet | Debugging Debugging in computer science Lehrbuch |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=3281178&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=018601182&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT zellerandreas whyprogramsfailaguidetosystematicdebugging |