Beírtam a következőt: help, amikor a GDB-ben voltam, de nem találtam semmit a lépésről, lépésről -over and step-out. Töréspontot tettem egy Assembly programba az _start (break _start) könyvtárba. Utána beírtam a next és ezzel befejezte a hibakeresést. Gondolom azért, mert befejezte _start és nem “t lépni , ahogy szerettem volna.

Mindenki tud segíteni?

Megjegyzések

  • Olvassa el a teljes GDB-dokumentumot. Mint emlékszem, nagyon hasznosak voltak ebben, amikor először megtanultam. Sajnos ' nem kellett több évtizedig egyetlen programot sem hibakeresni ezen a szinten, ezért úgy tűnik, hogy a tényleges parancsok kicserélődtek az agyamban. Tehát ' nem igazán tudok választ írni. De, ha kitalálod a kézikönyvekből, akkor válaszolhatsz saját kérdésedre egy bónuszért.
  • @MAP I ' próbálja újra. Megpróbáltam jobb hibakeresőt (KDbg) használni, de Nem tudom, hogy ' nem sikerül használni az Ubuntuban .
  • a gdb jó hibakereső. Érdemes az Emacst használni frontendként.
  • A gdb iszonyatos hibakereső. Számtalan kiterjesztés foglalkozik azzal, hogy mennyit szív. Szörnyű szintaxis, nem konzisztens parancsok, nehézkes, szörnyű lapozás, archaikus formázás, nincs ' t hexdump. Tehát nem, ez ' nem jó hibakereső. Ha úgy gondolja, hogy nem, akkor ' nem használt jó hibakeresőt.

Válasz

help running ad néhány tippet:

Van step és next utasítások (valamint nexti és stepi).

(gdb) help next Step program, proceeding through subroutine calls. Usage: next [N] Unlike "step", if the current source line calls a subroutine, this command does not enter the subroutine, but instead steps over the call, in effect treating it as a single source line. 

Tehát láthatjuk, hogy step belép szubrutinokba, de next over alprogramok.

A step és stepi (és a next és nexti) “vonal” vagy “utasítás” lépésekkel különböztetik meg egymást.

step -- Step program until it reaches a different source line stepi -- Step one instruction exactly 

Kapcsolódó: finish:

(gdb) help finish Execute until selected stack frame returns. Usage: finish Upon return, the value returned is printed and put in the value history. 

Sokkal több hasznos információ található a https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html

Megjegyzések

  • Mit jelent alatt azt jelenti, amíg el nem ér egy másik forrásvonalat ?
  • for(i=0;i<10;i++) { printf("%d\n",i); } egy forrássor, de több utasítás.
  • Van-e mód a kilépésre? Nem tudtam ' megtalálni a futási súgóban.
  • Mit értesz " kilépés "? A finish parancs befejezi az aktuális veremkeretet, amely általában befejezi az aktuális alprogramot és visszatér a hívóhoz.
  • finish vagy fin a GDB-ben a step-out a IDEA vagy Eclipse.

Válasz

Azért jöttem ide, mert ugyanaz a kérdésem volt . Végül arra gondoltam, hogy a célom érdekében bármikor használhatok olyat, mint egy hurok “kilépése”, csak beállíthatok egy másik töréspontot a hurok után, majd hagyom, hogy a program befejezzen continue a hurkot, és utána fuss be a töréspontba. Sajnáljuk, ha ez a legtöbb ember számára nyilvánvaló, de valószínűleg hasznos annak, aki választ keres erre a kérdésre.

Válasz

Használja a “finish” parancsot; ez néha ugyanazt csinálja, mint a “kilépés”. Befejezi a verem műveletét (általában egy függvény), és azután a következő sorra lép. További információkért keresse meg a parancsot.

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