adresse start/ende des code/daten/stacksegment eines prozess herausfinden
-
Hallo,
ich muss eine programm schreiben welche mir die adresse start/ende des code/daten/stacksegment eines prozess herraus gibt bzw. in eine datei schreibt, also den namen des Prozess hab ich schon herraus gefunden:
struct task_struct *p;
p=find_task_by_pid(pid);// die wurde vorher durch den User in eine ProcDatei
//gepostetund dann hab ich procfs_read(...){
written+=snprintf(buf,sizep->comm)return written;
}
//dies funktioniert auchaber wenn ich
procfs_read2(...){
int written=0;
long int temp=p->mm->start_code;
written+=snprintf(buf,size,temp);
}
//er kompeliert es zwar, auch ohne fehler oder warnungen, aber er schmiert immer dabei ab(also der vm-player)
und diese methohde hab ich auch schon versucht:
mm->mmap->vm_start
geht aber auch nicht
und mit unsigned long int temp geht es auch nicht...
kann mir einer dabei helfen...wäre nett.
-
kann dir leider nicht helfen aber ich glaub wenn du dein post ordentlicher gestaltest indem du z.B. die Codetags verwendest werden dir mehr leute helfen weil sich Code ohne Codetags sehr schwer lesen lässt.
blan
-
ok hier noch mal mit code tags:
also ich will an den die start/ende des code/daten/stack segments dran kommen, dafür kann man in eine proc datei die PID des prozesses schreiben, der name wird dann in die datei name geschrieben und die adressen in die datei memory.das mit den namen klappt auch:
proc_read(char *buf, char **start, off_t offset, int size, int *eof, void *data){ int written =0; written +=snprintf(buf,size, p->comm); *eof=1; return written}
aber wenn ich an die adresse kommen will hängt er sich immer auf dafür fast der gleiche code, nur statt dessen:
int unsigned long temp=p->mm->start_code; written +=snprintf(buf,size,"Adresse %lu",temp); *eof=1; return written;
p ist der prozess den ich mit
static struct task *p; p=find_task_by_pid(pid);
bekomme.
ich hab es auch schon mit:mm->mmap->vm_start
versucht geht aber auch nicht.
ich versteh ich nicht warum das nicht funktioniert, er compliert es zwar aber hängt sich immer auf sobald ich die memory datei auslesen möchte.