Mi a különbség a LLDB és a GDB között? És miért nem ugyanazok a parancsok?


Válasz 1:

Az LLDB és a GDB különböző korszakokból származik (~ 2007 vs 1986 ill.), És különféle alapvető könyvtárakkal és filozófiákkal készültek.

Míg a GDB érettebb és általában teljesebb, az LLDB-t kevésbé terheli a hagyaték, és előnye a modern könyvtárak, valamint a Clang kifejező elemző teljes ereje, amely különösen fontos a komplex C ++ kifejezések kezelésekor. Az LLVM C ++ támogatása tehát sokkal jobb, mint a GDB támogatása.

A GDB érettsége többek között a „non-stop” hibakeresést teszi lehetővé, amely lehetővé teszi egyetlen szál leállítását egy törési ponton. Az LLVM még nem rendelkezik ilyen funkcióval.

További fontos különbség az engedélyezésben. A GDB GPLv3, az LLDB pedig UIUC (MIT / BSD stílusú licenc). Ennek oka az, hogy a GLD-hez könnyebb a LLDB más szoftverekbe történő integrálása a licenc megsértése nélkül. Ez befolyásolja az írásmódot úgy, hogy az LLVM valószínűleg jobban törődött a dolgok integrálhatóságával.

Ami a parancsokat illeti, az LLDB valószínűleg nem ugyanazokat a parancsokat és szintaxist alkalmazta, mert ennek végrehajtása nehezebbé tette volna a debugger viselkedésére vonatkozó új ötletek megvalósítását.

Irodalom:

fwd: fenyegeti-e az LLDB a GDB sikerét? # 999