[EMAIL PROTECTED] wrote: > Hi, there, > > I have applied the 2.6.13 kgdb patch into my 2.6.12 kernel in Intel X86_64 > Xeon > motherboard. kgdb can start well and accept gdb commands and reply. For > example, it can stop at kgdb.c after gdb is connected, allow me issue "info > regi", "info thr", "next", "step", "continue", and ctrl-C to stop the running > kernel etc. > > All seem good except the major step: I cannot switch thread. After seeing all > threads, I issue "thr 20" to switch to another thread. The command returns OK, > and the registers seem to have been changed correctly. But when I issue "next" > or "bt", I found it is still in the old thread. What am I missing?
You are expecting too much. Kgdb can examine other threads but does not actually cause the kernel to switch to them. If you want to have kgdb stop at some place in another thread while it is alive (i.e. the current executing thread) you need to place a breakpoint at that location. What I usually do is to examine the thread with kgdb and then put a breakpoint at the current instruction in that thread. This can be complicated by the fact that a lot of kernel code is shared, so... Switch to the thread and do a bt. You should see the thread in switch (unless it is SMP and the thread is being run by another cpu). Look through the bt for the place you really want kgdb to give you control and set a breakpoint there. Remember, shared code will likely cause you to end up in the wrong code. You need to, at the very least, get beyond switch and all the timeout code. You also need to make sure that the kernel will, sometime soon, switch to the thread of interest. I.e. kgdb will NOT pull a program out of a suspend state (at least not with out a bit of help from you). -- George > > Here is the register infor befor issuing thread switch command. > > (gdb) info regi > rax 0xffffffff 4294967295 > rbx 0xffffffff8047f860 -2142767008 > rcx 0x20 32 > rdx 0x0 0 > rsi 0xffffffff80689280 -2140630400 > rdi 0x0 0 > rbp 0xffffffff80636f50 0xffffffff80636f50 > rsp 0xffffffff80525038 0xffffffff80525038 > r8 0x0 0 > r9 0x0 0 > r10 0xffff810128021980 -139633010534016 > r11 0xe4 228 > r12 0xa 10 > r13 0x2aaaaacdd360 46912498422624 > r14 0x0 0 > r15 0x2aaaaacdd360 46912498422624 > rip 0xffffffff80155d4b 0xffffffff80155d4b <breakpoint+123> > eflags 0x246 582 > cs 0x0 0 > ss 0x0 0 > ds 0x0 0 > es 0x0 0 > fs 0x0 0 > ---Type <return> to continue, or q <return> to quit--- > gs 0x0 0 > (gdb) > > Here is the thread I want to switch to: > > 19 thread 8365 (tom_ext3_1) 0xffffffff803803d0 in thread_return () > at kernel/sched.c:1481 > Sending packet: $qThreadExtraInfo,20ab#aa...Ack > Packet received: 64645f7070617274006c6f636b000000 > Sending packet: $Hg20ab#d4...Ack > Packet received: OK > Sending packet: $g#67...Ack > Packet received: > 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c89d85270181ffff489d85270181ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0033880ffffffff4600000000000000 > > Here is the register info after I issued thread > > (gdb) info regi > rax 0x0 0 > rbx 0x0 0 > rcx 0x0 0 > rdx 0x0 0 > rsi 0x0 0 > rdi 0x0 0 > rbp 0xffff810127923dc8 0xffff810127923dc8 > rsp 0xffff810127923d48 0xffff810127923d48 > r8 0x0 0 > r9 0x0 0 > r10 0x0 0 > r11 0x0 0 > r12 0x0 0 > r13 0x0 0 > r14 0x0 0 > r15 0x0 0 > rip 0xffffffff803803d0 0xffffffff803803d0 <thread_return> > eflags 0x46 70 > cs 0x0 0 > ss 0x0 0 > ds 0x0 0 > es 0x0 0 > fs 0x0 0 > ---Type <return> to continue, or q <return> to quit--- > gs 0x0 0 > (gdb) > > > Here is the gdb packet exchange information when I issue "next" command after > thread switching: > > (gdb) n > Sending packet: $Hg34b5#ad...Ack > Packet received: OK > Sending packet: $g#67...Ack > Packet received: > ffffffff0000000060f84780ffffffff2000000000000000000000000000000080926880ffffffff0000000000000000506f6380ffffffff38505280ffffffff00000000000000000000000000000000801902280181ffffe4000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a00004b5d1580ffffffff4602000000000000 > Sending packet: $Hg20ad#d6...Ack > Packet received: OK > Sending packet: $g#67...Ack > Packet received: > 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c83d92270181ffff483d92270181ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0033880ffffffff4600000000000000 > Sending packet: $Hg34b5#ad...Ack > Packet received: OK > Sending packet: $g#67...Ack > Packet received: > ffffffff0000000060f84780ffffffff2000000000000000000000000000000080926880ffffffff0000000000000000506f6380ffffffff38505280ffffffff00000000000000000000000000000000801902280181ffffe4000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a00004b5d1580ffffffff4602000000000000 > Sending packet: $vCont?#49...Ack > Packet received: > Packet vCont (verbose-resume) is NOT supported > Sending packet: $Hc0#db...Ack > Packet received: OK > Sending packet: $s#73...Ack > Packet received: T05thread:00000000000034b5; > Sending packet: $g#67...Ack > Packet received: > ffffffff0000000060f84780ffffffff2000000000000000000000000000000080926880ffffffff44fd3a80ffffffff506f6380ffffffff38505280ffffffff00000000000000000000000000000000801902280181ffffe4000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a0000525d1580ffffffff4603000000000000 > Sending packet: $mffffffff80525040,8#99...Ack > Packet received: 795d1580ffffffff > Sending packet: $s#73...Ack > Packet received: T05thread:00000000000034b5; > Sending packet: $g#67...Ack > Packet received: > 000000000000000060f84780ffffffff2000000000000000000000000000000080926880ffffffff44fd3a80ffffffff506f6380ffffffff38505280ffffffff00000000000000000000000000000000801902280181ffffe4000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a0000545d1580ffffffff4603000000000000 > Sending packet: $s#73...Ack > Packet received: T05thread:00000000000034b5; > Sending packet: $g#67...Ack > Packet received: > 000000000000000060f84780ffffffff2000000000000000000000000000000080926880ffffffff44fd3a80ffffffff506f6380ffffffff30505280ffffffff00000000000000000000000000000000801902280181ffffe4000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a0000602d1380ffffffff4603000000000000 > Sending packet: $mffffffff80525030,8#98...Ack > Packet received: 595d1580ffffffff > Sending packet: $Z0,ffffffff80155d59,1#18...Ack > Packet received: OK > Packet Z0 (software-breakpoint) is supported > Sending packet: $c#63...Ack > Packet received: T05thread:00000000000034b5; > Sending packet: $g#67...Ack > Packet received: > 05000000000000000400000000000000406e5f80ffffffff0000000000000000c7b300000000000040c14780ffffffff506f6380ffffffff38505280ffffffff00000000000000000000000000000000000000000000000000000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a00005a5d1580ffffffff9602000000000000 > Sending packet: $P10=595d1580ffffffff#f3...Ack > Packet received: > Sending packet: > $G05000000000000000400000000000000406e5f80ffffffff0000000000000000c7b300000000000040c14780ffffffff506f6380ffffffff38505280ffffffff00000000000000000000000000000000000000000000000000000000000000000a0000000000000060d3cdaaaa2a0000000000000000000060d3cdaaaa2a0000595d1580ffffffff9602000000000000#3a...Ack > Packet received: OK > Sending packet: $z0,ffffffff80155d59,1#38...Ack > Packet received: OK > Sending packet: $mffffffff80525040,8#99...Ack > Packet received: 795d1580ffffffff > breakpoint () at kernel/kgdb.c:1823 > 1823 ; > > The issue is it is still in kgdb.c, not switch to my tom_ext3_1 thread. > > Thanks! > > Jinggang > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Kgdb-bugreport mailing list > Kgdb-bugreport@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport > -- George Anzinger [EMAIL PROTECTED] ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Kgdb-bugreport mailing list Kgdb-bugreport@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport