|
Naslov: Problem sa gdb-om(DDD) Poruka od: stanko 31 Август 2007, 20:24:48 Moram da debugg-ujem jedan C program ali nailazim na mali problem...
Ovako izgleda deo koda,tacnije pocetak main-a: Kod: .... Koristim DDD i hocu da stavim breakpoint na case 'z' ali mi to nista ne znaci dok ne prosledim argument z.int main(int argc, char *argv[]){ char c; int task,syscall,idt,symbol,network,finger,check,device,kernel,archi,ommap,map,all; char *archiarg, *kernelarg, *devicearg, *taskarg, *maparg, *fingerarg, *allarg; task = syscall = idt = symbol = network = finger = check = device = kernel = archi = ommap = map = all = 0; archiarg = kernelarg = devicearg = taskarg = maparg = fingerarg = allarg = NULL; if(getuid() != 0){ fprintf(stderr, "You must be root !!\n"); exit(-1); } while((c = getopt(argc, argv, "hz:vp::sxnf:ict:d:a:k:m")) != -1){ switch(c){ case 'h' : help(argv[0]); break; case 'z' : all++; allarg = optarg; break; case 'v' : printf("VERSION %s\n", VERSION); exit(0); break; case 'p': task++; if(optarg != NULL) taskarg = optarg+1; break; ... Da li moze nekako da se prosledi ili da menjam kod tj. da ucitavam arg posebno??? Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: jboban 31 Август 2007, 23:38:48 Da li moze nekako da se prosledi ili da menjam kod tj. da ucitavam arg posebno??? Ako sam dobro razumeo, prilikom starta gdb-a prosledi mu program i željeni parametar:Kod: gdb program z Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: stanko 01 Септембар 2007, 14:56:16 Hm,mislim da to tako neide...taj drugi argument koji si naveo(z) gdb razume da je to folder u koji zelim uci...i on naravno ne postoji.
Mnogo bi mi prakticnije bilo kada bih mogao da debugg-ujem preko gdb-a ali koristeci DDD... Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: sysctl 01 Септембар 2007, 17:08:08 A sta kaze
Kod: gdb program -z (crtica ispred z) getopt parzuje switch-eve iz argv Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: stanko 01 Септембар 2007, 17:19:49 gdb: unrecognized option `-z'
Da,getopt parsuje switcheve...i nije mi problem da to prepravim na drugi nacin ali me prosto zanima da li je ikako moguce proslediti argument i da pritom ostavim kod kakav jeste. Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: sysctl 01 Септембар 2007, 18:08:24 Ok, probaj ovako.
Kod: gdb mojprog (gdb) set args z (gdb) break mojprog.c:20 (gdb) run Ovo mojprog.c:20 je ima fajla izvornog koda i linija gde hoces da postavis break sada sa print ime promenljive ispitujes njihove vrednosti, npr za promenljivu x Kod: (gdb) print x kada hoces da nastavis Kod: (gdb) continue E sad malo sam zardjao, ali ptype x daje tip promenljive, bt je stacktrace, sa frame se setas po stack-u koje je dao bt, a up i down se seta po jedan frejm gore i dole, valjda. Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: stanko 01 Септембар 2007, 19:27:42 OK,evo ovako izgleda:
Kod: (gdb) set args z ...sto znaci da treba ipak -z(gdb) break main.c:70 Breakpoint 1 at 0x804972e: file main.c, line 70. (gdb) run Starting program: program z Help : -h Program exited normally. Kod: (gdb) set args -z ::) ?Starting program: program -z program: option requires an argument -- z Help : -h Program exited normally. Ovo set args funkcionise samo mi nije jasno kako da zadam argument? Program u konsoli normalno pozivam sa program -z ali... ::) Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: sysctl 01 Септембар 2007, 19:37:03 Da, da, to sam i mislio -z. Nego problem je ovde
Kod: while((c = getopt(argc, argv, "hz:vp::sxnf:ict:d:a:k:m")) != -1){ gore u kodu iza z stoji dvotacka (z:), a koliko se secam za getopt dvotacka iza switcha znaci da on zahteva argument na primer mojprog -z 2, u tvom slicaju je allarg char*, pa znaci mojprog -z tekst ako ne navedes argument iza z, onda se parzuje drugi switch sto i daje gresku. Sta kaze izlaz mojprog -z bez ikakvih drugih argumenata. Vise detalja za getopt: man 3 getopt znaci argument zadajes sa Kod: (gdb) set args -z neki_tekst i naravno sve druge argumenta koji su potrebni Naslov: Odg: Problem sa gdb-om(DDD) Poruka od: stanko 02 Септембар 2007, 15:38:36 :redface:
Neznam zasto sam sve vreme pokusavao sa program -z kada sam uvek program pozivao sa program -z <ime fingerprinta> ...jos jednom... :redface: @sysctl ...izgleda da se dobro secas,svaka cast O0 Ljudi,hvala vam!
Powered by SMF 1.1.9 |
SMF © 2005, Simple Machines LLC |
Srpski prevod uredio: tomaja [linuxo.org]
Joomla Bridge by JoomlaHacks.com |