2017-06-04 6 views
0

私のプログラムは、freebsd clangでビルドされています。しかし、機能の下ではプログラムがクラッシュします。お願い助けて。停止理由=シグナルSIGILL:特権命令

Program block; 


bool CHARACTER::DragonSoul_ActivateDeck(int deck_idx) 
{ 
    if (deck_idx < DRAGON_SOUL_DECK_0 || deck_idx >= DRAGON_SOUL_DECK_MAX_NUM) 
    { 
     return false; 
    } 

    if (DragonSoul_GetActiveDeck() == deck_idx) 
     return true; 

    DragonSoul_DeactivateAll(); 

    if (!DragonSoul_IsQualified()) 
    { 
     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¿ëÈ¥¼® »óÀÚ°¡ È°¼ºÈ­µÇÁö ¾Ê¾Ò½À´Ï´Ù.")); 
     return false; 
    } 

    AddAffect(AFFECT_DRAGON_SOUL_DECK_0 + deck_idx, APPLY_NONE, 0, 0, INFINITE_AFFECT_DURATION, 0, false); 

    m_pointsInstant.iDragonSoulActiveDeck = deck_idx; 

    for (int i = DRAGON_SOUL_EQUIP_SLOT_START + DS_SLOT_MAX * deck_idx; 
     i < DRAGON_SOUL_EQUIP_SLOT_START + DS_SLOT_MAX * (deck_idx + 1); i++) 
    { 
     LPITEM pItem = GetInventoryItem(i); 
     if (NULL != pItem) 
      DSManager::instance().ActivateDragonSoul(pItem); 
    } 
} 


lldb debug; 

* thread #1: tid = 100852, 0x081086b4 game`CHARACTER::DragonSoul_ActivateDeck(this=0x31bbd000, deck_idx=0) + 388 at char_dragonsoul.cpp:90, stop reason = signal SIGILL: privileged instruction 
    frame #0: 0x081086b4 game`CHARACTER::DragonSoul_ActivateDeck(this=0x31bbd000, deck_idx=0) + 388 at char_dragonsoul.cpp:90 
    87     LPITEM pItem = GetInventoryItem(i); 
    88     if (NULL != pItem) 
    89       DSManager::instance().ActivateDragonSoul(pItem); 
-> 90   } 
    91 } 
    92 
    93 void CHARACTER::DragonSoul_DeactivateAll() 

答えて

0

デバッガ(gdb/your/program/executable、次に「run」を使用)を使用して実行します。その後、 "disass"を行います。クラッシュの原因となった指示が表示されます。 clangは、あなたが持っているものよりも新しいCPUモデルのコードを発行するかもしれません。

+0

返信用Thx。マシンcPU i386 clangビルド設定の一般的なCPU。これは問題でしょうか? –

+0

また、上記のデバッガのコードを外してください。私はlldbデバッガを使用します。 –

+0

コマンドは、デバッガ自体の名前を除いてlldbと同じにする必要があります。 –

関連する問題