save process name for debugging
This commit is contained in:
parent
7e89fb90bd
commit
7366e042d9
1
proc.h
1
proc.h
|
@ -40,6 +40,7 @@ struct proc {
|
|||
struct inode *cwd; // Current directory
|
||||
struct jmpbuf jmpbuf; // Jump here to run process
|
||||
struct trapframe *tf; // Trap frame for current interrupt
|
||||
char name[16]; // Process name (debugging)
|
||||
};
|
||||
|
||||
// Process memory is laid out contiguously:
|
||||
|
|
10
sysfile.c
10
sysfile.c
|
@ -322,7 +322,7 @@ sys_exec(void)
|
|||
struct elfhdr elf;
|
||||
struct proghdr ph;
|
||||
char *mem = 0;
|
||||
char *path, *s;
|
||||
char *path, *s, *last;
|
||||
uint argv;
|
||||
|
||||
if(argstr(0, &path) < 0 || argint(1, (int*)&argv) < 0)
|
||||
|
@ -399,6 +399,12 @@ sys_exec(void)
|
|||
}
|
||||
*(uint*)(mem + p1) = 0;
|
||||
|
||||
// Save name for debugging.
|
||||
for(last=s=path; *s; s++)
|
||||
if(*s == '/')
|
||||
last = s+1;
|
||||
safestrcpy(cp->name, last, sizeof cp->name);
|
||||
|
||||
// commit to the new image.
|
||||
kfree(cp->mem, cp->sz);
|
||||
cp->sz = sz;
|
||||
|
@ -419,7 +425,7 @@ sys_exec(void)
|
|||
}
|
||||
|
||||
iput(ip);
|
||||
|
||||
|
||||
cp->tf->eip = elf.entry;
|
||||
cp->tf->esp = sp;
|
||||
setupsegs(cp);
|
||||
|
|
6
trap.c
6
trap.c
|
@ -80,10 +80,10 @@ trap(struct trapframe *tf)
|
|||
break;
|
||||
|
||||
default:
|
||||
if(curproc[cpu()]) {
|
||||
if(cp) {
|
||||
// Assume process divided by zero or dereferenced null, etc.
|
||||
cprintf("pid %d: unhandled trap %d on cpu %d eip %x -- kill proc\n",
|
||||
curproc[cpu()]->pid, v, cpu(), tf->eip);
|
||||
cprintf("pid %d %s: unhandled trap %d on cpu %d eip %x -- kill proc\n",
|
||||
cp->pid, cp->name, v, cpu(), tf->eip);
|
||||
proc_exit();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue