Depuración inversa a gran escala

— . Fullstack- Python , Facebook; FB LLDB, .





, , . 0,1 % , . , 0,1 % , . , .






. ( ) , , . , Facebook, , .





, , , . CPU , LLDB, — -.





, ?

Intel Processor Trace (Intel PT), , . — .





, , Intel PT . , , , :





Cuando se ejecutan varios procesos (A y B) al mismo tiempo, los datos de seguimiento se almacenan en un búfer.  En t + 8, los datos del proceso B comienzan a sobrescribir los datos más antiguos (datos del proceso A) en el búfer.
(A B) , . t+8 B ( A) .

, , , Intel PT . , . , . , .





, eBPF- — , , , , , . , , .





, , - . , .





, ? . , . , LLDB, . . .





El seguimiento contiene principalmente información sobre qué ramas se capturaron y cuáles no.  Comparamos esta información con todas las instrucciones del binario original y restauramos las instrucciones que fueron ejecutadas por el programa.  Más tarde, utilizando la pila de simbolización LLDB, podemos obtener la información relevante sobre el código fuente y mostrársela al ingeniero en una forma legible.
, , — . , . LLDB .

:





— LLDB. — . , , . , , .





Parte del árbol de llamadas a funciones, donde cada segmento vertical contiene instrucciones y los lugares de la llamada se indican mediante flechas.
, , .

, , , ; . , — ?





, 16 . 13, 15, , if . , , , , foo . , , . .





, . , function_a. :





, - VSCode, .





, , . , ; , ( ), , — .





, , . , fetch .





, (, P99). . , , , , . .





, : B .





, . , " " , Tracery. , LLDB . — , .





? , , 0,1 % , "Reverse debug on VSCode". , , , , if, , .





, . ( ) , . , . , .





, :





  • Data Scientist





  • Data Analyst





  • Data Engineering









  • Fullstack- Python





  • Java-





  • QA- JAVA





  • Frontend-









  • C++





  • Unity





  • -





  • iOS-





  • Android-









  • Machine Learning





  • "Machine Learning Deep Learning"





  • " Data Science"





  • " Machine Learning Data Science"





  • "Python -"





  • " "









  • DevOps








All Articles