[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

Reply via email to