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.