Depuração reversa em grande escala

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





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






. ( ) , , . , Facebook, , .





, , , . CPU , LLDB, — -.





, ?

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





, , Intel PT . , , , :





Quando vários processos (A e B) estão em execução ao mesmo tempo, os dados de rastreamento são armazenados em um buffer.  Em t + 8, os dados do processo B começam a sobrescrever os dados mais antigos (dados do processo A) no buffer.
(A B) , . t+8 B ( A) .

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





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





, , - . , .





, ? . , . , LLDB, . . .





O rastreamento contém principalmente informações sobre quais ramificações foram capturadas e quais não foram.  Comparamos essas informações com todas as instruções do binário original e restauramos as instruções que foram executadas pelo programa.  Posteriormente, usando a pilha de simbolização LLDB, podemos obter as informações relevantes sobre o código-fonte e mostrá-lo ao engenheiro de forma legível.
, , — . , . LLDB .

:





— LLDB. — . , , . , , .





Parte da árvore de chamada de função, onde cada segmento vertical contém instruções e os locais da chamada são indicados por setas.
, , .

, , , ; . , — ?





, 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