Jelenleg ragaszkodom az alkalmazásom távoli hibakeresési problémájához a következővel: gdb. Szeretném, ha a képesség egy távoli folyamathoz való csatoláshoz és a IDE “vizuális hibakereséshez (Visual Studio Code -et használok).

A A probléma az, hogy az IDE pid segítségével csatlakozhat egy helyi folyamathoz, ami nem igazán hasznos. Tehát ha helyi port továbbítást kérek, használhatom a helyi portot a kapcsolat továbbítására, ami megint nem igazán az, amire vágyom.

Lehetséges-e valami olyasmi, mint a “pid-forwarding”, azaz beállítottam néhány pid amely valójában távoli folyamat.

Megjegyzések

  • Ön ' nem mondom el, hogy mit használ az IDE (és mivel én ' nem használok semmilyen IDE-t, valószínűleg nem lennék ' segíteni tud). De meg kell vizsgálnia a gdbserver programot – azt a ' sa kis programot, amely beágyazott / visszafogott rendszeren futtatható, és csatlakozhat hozzá a ' kövér hibakereső ' egy erősebb gépből.
  • @UncleBilly megtettem. " Visual Studio kódot használok ". Sajnos dokumentált, hogy nem támogatja a távoli hibakeresést …
  • A @UncleBilly gdbserver úgy hangzik, mintha én szerettem volna. Köszönet.

Válasz

As Billy bácsi szerint ennek szép módja a GDB távoli hibakeresési képességeinek használata. Ez úgy működik, hogy futtat egy „kis” hibakeresőt a hibakeresni kívánt folyamatot futtató gazdagépen, és csatlakozik hozzá a fejlesztői környezetet futtató állomás gdb segítségével. Mivel sok IDE (beleértve a VS-kódot is) támogatja a hibakeresést a gdb használatával, a fejlesztői környezet kényelmét bárhol futó folyamatokra célozhatja, beleértve más platformokat is.

A hibakeresni kívánt folyamatot futtató gazdagépen telepítenie kell a gdbserver alkalmazást (gyakran statikus bináris fájl másolásával), és futtatnia kell; például:

gdbserver --attach :9953 ${pid} 

felsorolja a 9953 portot, és csatolja a megadott folyamatazonosítóhoz. Különböző módokat határozhat meg a szerverhez való csatlakozáshoz (soros portok, IP-címek …), vagy futtathat egy parancsot a hibakereséshez, vagy csatolhat egy futó folyamathoz, vagy akár futtathat egy „hibakereső szervert” is, külön folyamat nélkül .

A fejlesztői környezettel rendelkező gazdagépen a gdb belül csatlakozik a célhoz:

$ gdb ... (gdb) target remote <IP address>:9953 

Minden más a megszokott módon működik. A gdb átviszi a szükséges fájlokat (könyvtárak stb.) a távoli célhelyről, de a dolgok felgyorsítása érdekében a fájlok helyi másolatára mutathat. Helyi forrásokat fog használni.

Ez a várakozásoknak megfelelően működik, ha a két gazdagép azonos, de arra is lehet, hogy különböző gazdagépekkel működjön együtt, pl a hibakereséshez egy Windows rendszer egy Linux rendszerről, vagy még tipikusabban egy program, amely kis beágyazott rendszeren fut egy nagyobb fejlesztői platformról.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük