Previous: Signals, Up: Stopping   [Contents][Index]


5.4 ¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¡¦¥×¥í¥°¥é¥à¤ÎÄä»ß¤Èµ¯Æ°

¥æ¡¼¥¶¡¦¥×¥í¥°¥é¥à¤¬Ê£¿ô¤Î¥¹¥ì¥Ã¥É ¡Ê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

¥¹¥±¥¸¥å¡¼¥é¤Î¸½ºß¤Î¥í¥Ã¥­¥ó¥°¡¦¥â¡¼¥É¤òɽ¼¨¤·¤Þ¤¹¡£