We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Debugging the debugger

00:00

Formal Metadata

Title
Debugging the debugger
Subtitle
Why your debugger doesn't work when you need it to
Title of Series
Number of Parts
31
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Symbolic debuggers are one of the most important tools in the programmer’s toolkit, but also one of the most overlooked pieces of technology. They have to work in some of the harshest conditions, supporting a huge set of programming languages and aggressive transformations by compilers. This talk explores how these debuggers work, how the operating system could help, what makes them fail and how they can be used more effectively. In this presentation, we will take you on a journey to some of the darkest and most confusing pits of systems programming involving debug formats, compilers and process control. We will describe situations where debuggers have failed you, why and how they can be addressed. These failures include missing critical data, corrupted output, performance bottlenecks and more. Even a single snapshot of application state can yield important clues that can reduce time to resolution. This ranges from the classes of instructions involved, to run-time breadcrumbs from the garbage collector or memory allocator, to the relationships of objects in application memory. We will take a tour of commonly neglected areas of application state whose exploration can greatly reduce time to resolution of common classes of bugs. Various aspects of popular debuggers such as GDB and LLDB will be analyzed, including performance and debug information handling. Some of the worst bugs are ones that leave engineers with no visibility into application state. Perhaps a process is unable to dump core on your filesystem, or your debugger hangs extracting application state or your compiler has completely optimized out a crucial piece of information. What are the common pitfalls and how can they be resolved? We will investigate real-world situations where standard symbolic debugging techniques are insufficient or fail and how some of those situations can be mitigated.
DebuggerMessage passingSystem programmingScalabilityBacktrackingBuildingComputing platformSoftwareConcurrency (computer science)SynchronizationCore dumpMultiplicationArchitectureImplementationRootData storage deviceComputer networkServer (computing)VideoconferencingGame theoryDatabaseOperations researchBuffer overflowInformationMemory managementSemiconductor memoryKernel (computing)DebuggerDivisorComputer programmingOrder (biology)Computer hardwareQuicksortPhysical systemOnline helpState of matterProcess (computing)Internet service providerCartesian coordinate systemSymbol tableContext awarenessMachine codeStaff (military)ScalabilityComputer animationXML
Process (computing)Kernel (computing)CodeFile formatPhysical systemOperations researchWeightDoubling the cubeFunctional programmingNumberBuffer solutionOperating systemBefehlsprozessorSheaf (mathematics)Semiconductor memoryKernel (computing)JSONXML
File formatLink (knot theory)EmailComputer programTable (information)Sheaf (mathematics)Source codeRead-only memoryCodeData bufferFunction (mathematics)Core dumpAssembly languageDebuggerGenetic programmingBacktrackingVariable (mathematics)InformationPrincipal ideal domainThread (computing)Parameter (computer programming)RootComputer programmingCodeEmailSheaf (mathematics)File formatPoint (geometry)MetadataSemiconductor memoryPhysical systemSource codeType theoryTable (information)BijectionDependent and independent variablesDebuggerCorrespondence (mathematics)State of matterDialectGraph coloringLimit setFunction (mathematics)InjektivitätAssembly languageInformationVariable (mathematics)Computer animation
Operations researchSystem programmingElectric currentProcess (computing)Process (computing)Kernel (computing)Cartesian coordinate systemState of matterSpacetimeComputer programmingCASE <Informatik>RippingComputer animationJSONXMLSource code
Process (computing)Mechanism designSpacetimeAddress spaceKernel (computing)Object-oriented programmingSheaf (mathematics)File formatContent (media)Read-only memoryNumberVariable (mathematics)Data typeInformationFunction (mathematics)CodeLipschitz-StetigkeitKernel (computing)Computer fileVirtual memoryCASE <Informatik>Library (computing)Computer programmingInformationProgramming languageSystem callType theoryContent (media)Sheaf (mathematics)Functional programmingLine (geometry)Variable (mathematics)Exception handlingNumberFrame problemSpeicheradresseStandard deviationMappingSet (mathematics)Computer animation
SpeicheradresseNumberState of matterLine (geometry)Ocean currentComputer fileMappingSequenceSource codeOperator (mathematics)InformationMatrix (mathematics)Address spaceFinite-state machineSource code
Matrix (mathematics)Virtual machineOperations researchSequenceSource codeForm (programming)Coma BerenicesFrame problemComputer multitaskingDebuggerPerformance appraisalGraphical user interfaceMultiplication signSystem callInformationStack (abstract data type)Address spaceSpeicheradresseBefehlsprozessorState of matterMatrix (mathematics)Uniform resource locatorFinite-state machineFrame problemLine (geometry)Computer animation
InformationVariable (mathematics)AreaData bufferType theoryInformationCompilerNetwork topologyVariable (mathematics)Computer programmingExecution unitParameter (computer programming)Functional programmingAdditionCountingIntegerBuffer solutionInformation retrievalPointer (computer programming)SummierbarkeitComputer animation
Complex (psychology)Variable (mathematics)ExpressionData bufferState of matterVirtual machineSequenceOperations researchRead-only memoryCodeCore dumpAssembly languageFunction (mathematics)Fluid staticsDebuggerGenetic programmingBacktrackingInformationPrincipal ideal domainThread (computing)Template (C++)Parameter (computer programming)RootQuicksortKolmogorov complexityMathematical optimizationExpressionCompilerDifferent (Kate Ryan album)Variable (mathematics)Generic programmingUniform resource locatorProgramming languageComputer programmingSource codeInformationBitComputer animation
State of matterNormed vector spaceVirtual machineData bufferVariable (mathematics)Complex (psychology)ExpressionCompilerVariable (mathematics)ExpressionInformationCASE <Informatik>Frame problemPointer (computer programming)Virtual machineDebuggerExtension (kinesiology)Stack (abstract data type)Latent heatSemiconductor memoryAddress spaceLine (geometry)Computer animation
Frame problemThread (computing)Complex (psychology)BacktrackingCompilerCodeInformationImage resolutionFaktorenanalyseMathematical optimizationCASE <Informatik>InformationElectric generatorSoftware bugType theorySoftware testingVariable (mathematics)NumberCompilerThread (computing)Frame problemPower (physics)ExpressionInteractive televisionPairwise comparisonComputer programmingDebuggerCodeCompilerQuicksortXML
Game theoryVariable (mathematics)InformationRead-only memoryLoop (music)Thread (computing)Inductive reasoningLimit (category theory)Price indexLoop (music)CompilerMaxima and minimaComputer programmingMacro (computer science)Variable (mathematics)Assembly languageSemiconductor memoryCASE <Informatik>Mathematical optimizationJSONComputer animation
Programming languageInformationStructural loadComputer programmingCompilerInformationCASE <Informatik>Form (programming)Mathematical optimizationSoftware testingProgramming languageField (computer science)BitJSON
InformationRead-only memoryVariable (mathematics)Fehlende DatenMathematical optimizationMountain passSocial classProgramming languageCASE <Informatik>Field (computer science)BitFactory (trading post)Multiplication signPlanningMathematical optimizationQuicksortSystem callRecursionPoint (geometry)ImplementationComputer programmingSoftwareComputer animationJSON
InformationParameter (computer programming)Mathematical optimizationSoftwareType theoryGaussian eliminationCodeBlock (periodic table)PlanningLine codeDivisorComputer animation
Duality (mathematics)BootingInformationPersonal digital assistantString (computer science)Function (mathematics)Error messageoutputInterior (topology)Dot productDivisorMultiplication signComputer programmingVariable (mathematics)Form (programming)InformationReal numberPoint (geometry)Programming language
Variable (mathematics)Resource allocationCompilerPersonal digital assistantInformationStructural loadTask (computing)CASE <Informatik>Semiconductor memoryVariable (mathematics)Computer programmingResource allocationBefehlsprozessorCompilerType theoryComputer cluster
Function (mathematics)Computing platformSystem callRead-only memoryInformationVariable (mathematics)Resource allocationPersonal digital assistantCompilerCompilerComputing platformCASE <Informatik>CompilerFunctional programmingSemiconductor memorySystem callPoint (geometry)Heegaard splittingMultiplication signComputer animation
InformationSystem callComputing platformFunction (mathematics)CompilerRead-only memoryState of matterVirtual machineMatrix (mathematics)Operations researchSequenceSlide ruleCompilerLatent heatDefault (computer science)Process (computing)Basis <Mathematik>Computer programmingFrame problemCASE <Informatik>QuicksortVariable (mathematics)Computer animation
State of matterVirtual machineExecution unitCompilerCodeInformationFaktorenanalyseLoop (music)Mathematical optimizationRead-only memoryThread (computing)Inductive reasoningLimit (category theory)Personal digital assistantVariable (mathematics)Resource allocationBlock (periodic table)EmpennageInformationInsertion lossLatent heatMathematical optimizationStack (abstract data type)System callRecursionFunctional programmingParameter (computer programming)Factory (trading post)Block (periodic table)Computer animationXMLJSON
Block (periodic table)Mathematical optimizationEmpennageInformationFunction (mathematics)DebuggerFaktorenanalyseRead-only memoryKolmogorov complexityThread (computing)Total S.A.Semiconductor memoryBacktrackingGamma functionExponential functionSolid geometryLine (geometry)BitInformationParameter (computer programming)Mathematical optimizationCodeCASE <Informatik>Line (geometry)Computing platformProcess (computing)DebuggerSoftware developerFamilyCycle (graph theory)Object-oriented programmingSquare numberPoint (geometry)Computer configurationCrash (computing)QuicksortPlastikkarteThread (computing)Kolmogorov complexityComputer programmingNumberSemiconductor memorySubject indexingMultiplication signDifferent (Kate Ryan album)Revision controlSchwerpunktsystemVirtual memorySystem callDivisorSocial classLink (knot theory)Pairwise comparisonAmsterdam Ordnance DatumDiffuser (automotive)Video gamePhysical systemGraphics tabletFluid staticsForm (programming)GoogolLibrary (computing)Mobile appCausalityStack (abstract data type)Electric generatorSoftware bugMemory managementCore dumpComputer animationJSON
Field (computer science)Line (geometry)Software developerInternet service providerSource codeInformationGoodness of fitType theorySatelliteProcess (computing)Semiconductor memorySource code
CASE <Informatik>Reading (process)Semiconductor memoryAddress spaceSource codeAssembly languagePointer (computer programming)Multiplication signDialectDirection (geometry)WindowCodeOperator (mathematics)JSONXMLUML
Suspension (chemistry)Semiconductor memoryLattice (order)CausalityComputing platformCASE <Informatik>Social classCompilation albumSoftware bugIdentical particlesJSONXML
Stack (abstract data type)System callData recoveryComputer-generated imageryPointer (computer programming)Chi-squared distributionVideo gameHardware-in-the-loop simulationPoint (geometry)HeuristicSystem callComputer programmingStack (abstract data type)InformationFunctional programmingSymbol tablePointer (computer programming)CodeCASE <Informatik>Variable (mathematics)Source codeJSON
System callData recoveryStack (abstract data type)Pointer (computer programming)Line (geometry)Frame problemFunctional programmingSystem callSemiconductor memoryFrame problemAddress spacePointer (computer programming)DialectForm (programming)Flow separationRiflingStack (abstract data type)JSONXML
Drum memoryMemory managementData recoveryInterior (topology)Stack (abstract data type)Core dumpTrailJust-in-Time-CompilerRead-only memoryScalable Coherent InterfaceWeb 2.0Resource allocationMemory managementForm (programming)Cartesian coordinate systemProduct (business)Crash (computing)Object-oriented programmingCASE <Informatik>Software bugClassical physicsComputer configurationPhysical systemSemiconductor memoryCodeAddress spaceVariable (mathematics)QuicksortConstraint (mathematics)SpacetimeResource allocationFreewareDoubling the cubeSocial classMultiplication signError messageMathematical analysisState of matterVideo gameCycle (graph theory)XML
Memory managementMeta elementSubject indexingRun time (program lifecycle phase)CausalitySemiconductor memoryConsistencyResource allocationData managementMetadataData structureOrder (biology)DialectMemory managementOpen sourceRootProcess (computing)
Menu (computing)MassSource codeResource allocationRead-only memoryThread (computing)Process (computing)Cache (computing)Stack (abstract data type)DiagramProgram flowchart
Memory managementCASE <Informatik>Thread (computing)Electronic mailing listMemory managementResource allocationData structureFreewareLetterpress printingForm (programming)CausalityInformationDialectDoubling the cubeNetwork topologyRight angleSource codeJSONXML
Address spaceMemory managementThread (computing)Integral domainCache (computing)Boundary value problemCASE <Informatik>Pointer (computer programming)FreewareDirection (geometry)Thread (computing)Link (knot theory)InformationNetwork topologyJSONXML
Memory managementAddress spaceNetwork topologyFreewareInterior (topology)Time zoneCore dumpKernel (computing)Maxima and minimaShared memoryAverageWeb pageOperations researchFunction (mathematics)Block (periodic table)Message passingContext awarenessoutputContent (media)MiniDiscMaizeCompilerLimit (category theory)DebuggerExecution unitOffice suiteSCSICone penetration testDaylight saving timeExploit (computer security)Memory managementMereologyWrapper (data mining)System callStack (abstract data type)SeitentabellePointer (computer programming)Web crawlerHash functionLine (geometry)Open sourceRun time (program lifecycle phase)Similarity (geometry)Performance appraisalCASE <Informatik>Kolmogorov complexityInformationNumberCore dumpDecision theoryExecution unitProper mapProgramming languageRight angle32-bitMatrix (mathematics)Mathematical optimizationAlgorithmSheaf (mathematics)Software testingDebuggerOverhead (computing)Web pageAddress spaceResource allocationQuicksortPhysical systemMetadataCache (computing)BlogFrame problemThread (computing)Data structureSemiconductor memoryMathematicsOcean currentRippingComputer programmingFamilyKernel (computing)MultiplicationProbability density functionLatent heatIdentifiabilityLink (knot theory)2 (number)AdditionTime zoneEvent horizonReading (process)Object-oriented programmingComputer fileMachine visionMultiplication signTwitterPairwise comparisonBitMusical ensembleComputer configurationCompilerDensity of statesCompilerLevel (video gaming)Block (periodic table)Series (mathematics)ConsistencyFreezingPolar coordinate systemBulletin board systemTouch typingChainJSONXMLUML
Table (information)Computer fileFormal grammarSineSlide ruleBookmark (World Wide Web)View (database)TouchscreenReading (process)Arithmetic progressionPresentation of a groupMusical ensembleGoodness of fitSource codeXML
Transcript: English(auto-generated)