gdbserverは,non-stop modeをサポートしない.
GNU gdb (GDB) 6.8.50.20090203-cvs Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-pc-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>...
(gdb) set target-async 1 (gdb) set non-stop 1 (gdb) set debug remote Argument required (integer to set it to.). (gdb) set debug remote 1 (gdb) target remote localhost:12345 Remote debugging using localhost:12345 Sending packet: $qSupported#37...Ack Packet received: PacketSize=3fff;QPassSignals+;qXfer:libraries:read+;qXfer:auxv:read+;qXfer:features:read+;QStartNoAckMode+;qXfer:osdata:read+ Packet qSupported (supported-packets) is supported Sending packet: $QStartNoAckMode#b0...Ack Packet received: OK Sending packet: $Hg0#df...Packet received: OK Sending packet: $qXfer:features:read:target.xml:0,fff#7d...Packet received: l<target><architecture>i386</architecture></target> Non-stop mode requested, but remote does not support non-stop (gdb)
ぷぎゃ.
x86のLinuxだからかなー,組込みでもホスト環境でこなしちゃうだろうからなー.
と思って,src/gdb/gdbserver/ を探ってみたけれど,どこにも QNonStopの文字列が無い.
まじですか? 組込みLinuxの人たちは,どうやってマルチスレッドアプリのデバッグをしているのですか? まさか,printfですか? きょうびITRON屋でもprintfデバッグはしませんぜ.
ITRONよりも開発環境が整っているというのは,組込みLinuxベンダの常套句だと思うのですけれどね.現実は,こんなものですか.
まあ,今回の調査の目的は,GDBの挙動をみること.組込みLinuxのアプリ屋さんたちが,どんなに劣悪な環境下で開発していようが知ったことではないのですけれども.