¥æ¡¼¥¶¡¦¥×¥í¥°¥é¥à¤¬Ê£¿ô¤Î¥¹¥ì¥Ã¥É ¡Êsee Debugging programs with multiple threads¡Ë ¤ò»ý¤Ä¾ì¹ç¡¢ ¤¹¤Ù¤Æ¤Î¥¹¥ì¥Ã¥É¤Ë¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤹ¤ë¤«¡¢ ÆÃÄê¤Î¥¹¥ì¥Ã¥É¤Ë¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤹ¤ë¤«¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
break linespec thread threadno
break linespec thread threadno if …
linespec¤Ï¥½¡¼¥¹¹Ô¤ò»ØÄꤷ¤Þ¤¹¡£ µ½ÒÊýË¡¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¤¬¡¢ ¤É¤ÎÊýË¡¤ò»È¤Ã¤Æ¤â·ë²ÌŪ¤Ë¤Ï¥½¡¼¥¹¹Ô¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
break
¥³¥Þ¥ó¥É¤Ë½¤¾þ»Ò‘thread threadno’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢
¤¢¤ëÆÃÄê¤Î¥¹¥ì¥Ã¥É¤¬¤³¤Î¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤ËÅþ㤷¤¿¤È¤¤À¤±GDB¤¬¥×¥í¥°¥é¥à¤òÄä»ß¤¹¤ë¤è¤¦¡¢
»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤³¤Çthreadno¤Ï¡¢
GDB¤Ë¤è¤Ã¤Æ³ä¤êÅö¤Æ¤é¤ì¤ë¥¹¥ì¥Ã¥É¼±ÊÌÈÖ¹æ¤Ç¡¢
‘info threads’¥³¥Þ¥ó¥É¤Ë¤è¤ë½ÐÎϤκǽé¤ÎÍó¤Ëɽ¼¨¤µ¤ì¤ë¤â¤Î¤Ç¤¹¡£
¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤹ¤ëºÝ¤Ë‘thread threadno’¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢ ¤½¤Î¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤Ï¥æ¡¼¥¶¡¦¥×¥í¥°¥é¥àÆâÉô¤Î¤¹¤Ù¤Æ¤Î¥¹¥ì¥Ã¥É¤ËŬÍѤµ¤ì¤Þ¤¹¡£
¾ò·ïÉÕ¤¤Î¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤ËÂФ·¤Æ¤âthread
¼±Ê̻Ҥò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤Î¾ì¹ç¡¢
°Ê²¼¤Î¤è¤¦¤Ë‘thread threadno’¤ò¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥ÈÀ®Î©¾ò·ï¤ÎÁ°¤Ëµ½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£
(gdb) break frik.c:13 thread 28 if bartab > lim
¤¤¤«¤Ê¤ëÍýͳ¤Ë¤è¤ë¤Î¤Ç¤¢¤ìGDBÇÛ²¼¤Ë¤ª¤¤¤Æ¥æ¡¼¥¶¡¦¥×¥í¥°¥é¥à¤¬Ää»ß¤·¤¿¾ì¹ç¡¢ ¥«¥ì¥ó¥È¡¦¥¹¥ì¥Ã¥É¤À¤±¤Ç¤Ï¤Ê¤¯¡¢ ¤¹¤Ù¤Æ¤Î¼Â¹Ô¥¹¥ì¥Ã¥É¤¬Ää»ß¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢ ÃΤé¤Ê¤¤¤¦¤Á¤Ë¾õÂÖ¤ÎÊѲ½¤¬È¯À¸¤¹¤ë¤³¤È¤ò¿´ÇÛ¤¹¤ë¤³¤È¤Ê¤¯¡¢ ¥¹¥ì¥Ã¥É¤ÎÀÚ¤êÂØ¤¨¤â´Þ¤á¤Æ¡¢ ¥×¥í¥°¥é¥àÁ´ÂΤξõÂÖ¤ò¸¡ºº¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
µÕ¤Ë¡¢
¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤òºÆ³«¤·¤¿¤È¤¤Ë¤Ï¡¢
¤¹¤Ù¤Æ¤Î¥¹¥ì¥Ã¥É¤¬¼Â¹Ô¤ò³«»Ï¤·¤Þ¤¹¡£
¤³¤ì¤Ï¡¢
step
¥³¥Þ¥ó¥É¤änext
¥³¥Þ¥ó¥É¤Ë¤è¤ë¥·¥ó¥°¥ë¡¦¥¹¥Æ¥Ã¥×¼Â¹Ô¤Î¾ì¹ç¤Ç¤âƱÍͤǤ¹¡£
ÆÃ¤ËGDB¤Ï¡¢ ¤¹¤Ù¤Æ¤Î¥¹¥ì¥Ã¥É¤ÎÊâÄ´¤ò¹ç¤ï¤»¤Æ¥·¥ó¥°¥ë¡¦¥¹¥Æ¥Ã¥×¼Â¹Ô¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ ¥¹¥ì¥Ã¥É¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤Ï¡¢ ¥Ç¥Ð¥Ã¥°ÂоݤΥޥ·¥ó¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¡¦¥·¥¹¥Æ¥à¤Ë°Í¸¤¹¤ë ¡ÊGDB¤¬´ÉÍý¤¹¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡Ë ¤Î¤Ç¡¢ ¥«¥ì¥ó¥È¡¦¥¹¥ì¥Ã¥É¤¬¥·¥ó¥°¥ë¡¦¥¹¥Æ¥Ã¥×¤Î¼Â¹Ô¤ò´°Î»¤¹¤ëÁ°¤Ë¡¢ ¾¤Î¥¹¥ì¥Ã¥É¤ÏÊ£¿ô¤Îʸ¤ò¼Â¹Ô¤·¤Æ¤·¤Þ¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤Þ¤¿¡¢ ¥×¥í¥°¥é¥à¤¬Ää»ß¤¹¤ë¤È¤¡¢ ¾¤Î¥¹¥ì¥Ã¥É¤Ï2¤Ä¤Îʸ¤Î´Ö¤Î¶³¦¤Î¤È¤³¤í¤Ç¤Ô¤Ã¤¿¤êÄä»ß¤¹¤ë¤è¤ê¤â¡¢ ʸ¤ÎÅÓÃæ¤ÇÄä»ß¤·¤Æ¤·¤Þ¤¦Êý¤¬°ìÈÌŪ¤Ç¤¹¡£
¤Þ¤¿¡¢ ·Ñ³¼Â¹Ô¤ä¥¹¥Æ¥Ã¥×¼Â¹Ô¤Î·ë²Ì¡¢ ¥×¥í¥°¥é¥à¤¬Ê̤Υ¹¥ì¥Ã¥ÉÆâ¤ÇÄä»ß¤·¤Æ¤·¤Þ¤¦¤³¤È¤â¤¢¤ê¤¨¤Þ¤¹¡£ ºÇ½é¤Î¥¹¥ì¥Ã¥É¤¬¥æ¡¼¥¶¤ÎÍ׵ᤷ¤¿½èÍý¤ò´°Î»¤¹¤ëÁ°¤Ë¡¢ ¾¤Î¥¹¥ì¥Ã¥É¤¬¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤ËÅþ㤷¤¿¾ì¹ç¡¢ ¥·¥°¥Ê¥ë¤ò¼õ¿®¤·¤¿¾ì¹ç¡¢ Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ ¾ï¤Ë¤³¤Î¤è¤¦¤Ê¤³¤È¤¬È¯À¸¤·¤Þ¤¹¡£
OS¤Ë¤è¤Ã¤Æ¤Ï¡¢ OS¥¹¥±¥¸¥å¡¼¥é¤ò¥í¥Ã¥¯¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ¤¿¤À1¤Ä¤Î¥¹¥ì¥Ã¥É¤À¤±¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
set scheduler-locking mode
¥¹¥±¥¸¥å¡¼¥é¤Î¥í¥Ã¥¥ó¥°¡¦¥â¡¼¥É¡Êlocking mode¡Ë¤òÀßÄꤷ¤Þ¤¹¡£
off
¤Î¾ì¹ç¤Ï¡¢
¥í¥Ã¥¯¤Î¥á¥«¥Ë¥º¥à¤Ïµ¡Ç½¤»¤º¡¢
Ǥ°Õ¤Î»þÅÀ¤Ë¤ª¤¤¤Æ¡¢
¤É¤Î¥¹¥ì¥Ã¥É¤â¼Â¹Ô¤µ¤ì¤ë²ÄǽÀ¤ò»ý¤Á¤Þ¤¹¡£
on
¤Î¾ì¹ç¤Ï¡¢
ºÆ»Ïư¡Êresume¡Ë¤µ¤ì¤ë¥¹¥ì¥Ã¥É¤ÎÍ¥Àè½ç°Ì¤¬Ä㤤¾ì¹ç¤Ë¤Ï¡¢
¥«¥ì¥ó¥È¡¦¥¹¥ì¥Ã¥É¤À¤±¤¬¼Â¹Ô¤ò·Ñ³¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
step
¥â¡¼¥É¤Ç¤Ï¡¢
¥·¥ó¥°¥ë¡¦¥¹¥Æ¥Ã¥×¼Â¹Ô¤Î¤¿¤á¤ÎºÇŬ²½¤¬¹Ô¤ï¤ì¤Þ¤¹¡£
¥¹¥Æ¥Ã¥×¼Â¹Ô¤ò¤·¤Æ¤¤¤ë´Ö¡¢
¾¤Î¥¹¥ì¥Ã¥É¤¬¡Ö¥×¥í¥ó¥×¥È¤ò²£¼è¤ê¤¹¤ë¡×¤³¤È¤¬¤Ê¤¤¤è¤¦¡¢
¥«¥ì¥ó¥È¡¦¥¹¥ì¥Ã¥É¤ËÀê͸¢¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£
¤Þ¤¿¡¢
¥¹¥Æ¥Ã¥×¼Â¹Ô¤ò¤·¤Æ¤¤¤ë´Ö¡¢
¾¤Î¥¹¥ì¥Ã¥É¤Ï¤¤ï¤á¤Æµ©¤Ë¤·¤«
¡Ê¤¢¤ë¤¤¤Ï¡¢
¤Þ¤Ã¤¿¤¯¡Ë
¼Â¹Ô¤¹¤ë¥Á¥ã¥ó¥¹¤òÍ¿¤¨¤é¤ì¤Þ¤»¤ó¡£
next
¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤Æ´Ø¿ô¸Æ¤Ó½Ð¤·¤Î¼¡¤Î¹Ô¤Þ¤Ç½èÍý¤ò¿Ê¤á¤ë¤È¡¢
¾¤Î¥¹¥ì¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤ë²ÄǽÀ¤Ï¹â¤¯¤Ê¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢
continue
¡¢
until
¡¢
finish
¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ë¤È¡¢
¾¤Î¥¹¥ì¥Ã¥É¤Ï
´°Á´¤Ë¼«Í³¤Ë¼Â¹Ô¤µ¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤·¤«¤·¡¢
¤½¤Î¥¿¥¤¥à¥¹¥é¥¤¥¹¤ÎÃæ¤Ç¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤ËÅþ㤷¤Ê¤¤¸Â¤ê¡¢
¾¤Î¥¹¥ì¥Ã¥É¤¬¡¢
¥Ç¥Ð¥Ã¥°¤ÎÂоݤȤʤäƤ¤¤ë¥¹¥ì¥Ã¥É¤«¤é¡¢
GDB¥×¥í¥ó¥×¥È¤ò²£¼è¤ê¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
show scheduler-locking
¥¹¥±¥¸¥å¡¼¥é¤Î¸½ºß¤Î¥í¥Ã¥¥ó¥°¡¦¥â¡¼¥É¤òɽ¼¨¤·¤Þ¤¹¡£