[C++, ASSIMP] Debug geht, Release nicht (mal wieder)
Verfasst: 13.05.2009, 23:54
Hallo zusammen,
ich versuch gerade (immer noch :) ) den Render-code aus dem assimp-viewer in eine eigene Library, bzw. erstmal eigene Klassen auszulagern. Das sieht auch schon ganz gut aus, nur die Release-Version stürzt leider ab, mit "access violation writing location 0x0000000". Hier mal der CallStack beim Crash, falls es was nützt:
Jetzt die Frage: Wie debuggt man sowas ? Ich kann nur bedingt durchsteppen, da wo's interessant wird, seh ich dann nichts mehr. Was mir aufgefallen ist: Ich kann erstens nicht mehr überall breakpoints setzen. Manche markiert er dann im sourcecode als durchsichtig, mit dem balloon tip "this breakpoint will not be hit. Invalid file". Andere breakpoints in der selben Methode akzeptiert er dagegen problemlos. Ich hab noch keine Gesetzmäßigkeit erkannt, wovon das abhängt.
zweitens: er crasht anscheinend innerhalb der folgenden for-schleife:
.. wenn ich im Debugger durchsteppe, steht meshIndex innerhalb der Schleife beim ersten Durchgang nicht auf 0, sondern auf 5160368 ! :shock: Mit der Obergrenze (mNumMeshes == 8) ist aber alles ok. Jetzt frag ich mich: Wird das in der Release Configuration nur nicht richtig angezeigt, oder geht tatsächlich was beim Initialisieren der Variable schief ?
Fragen über Fragen, ich hoff ich könnt mir helfen!
Vielen Dank für eure Zeit,
andy / ponx
ich versuch gerade (immer noch :) ) den Render-code aus dem assimp-viewer in eine eigene Library, bzw. erstmal eigene Klassen auszulagern. Das sieht auch schon ganz gut aus, nur die Release-Version stürzt leider ab, mit "access violation writing location 0x0000000". Hier mal der CallStack beim Crash, falls es was nützt:
- memcpy(unsigned char * dst=0x00000000, unsigned char * src=0x08c66610, unsigned long count=16) ASM
- _aiGetMaterialFloatArray() + 0x1cd bytes C++
- _aiGetMaterialColor() + 0x23 bytes C++
- AssimpRendererD3d::CMaterialManager::CreateMaterial(AssimpRendererD3d::AssetHelper::MeshHelper ...) C++
- ...
Jetzt die Frage: Wie debuggt man sowas ? Ich kann nur bedingt durchsteppen, da wo's interessant wird, seh ich dann nichts mehr. Was mir aufgefallen ist: Ich kann erstens nicht mehr überall breakpoints setzen. Manche markiert er dann im sourcecode als durchsichtig, mit dem balloon tip "this breakpoint will not be hit. Invalid file". Andere breakpoints in der selben Methode akzeptiert er dagegen problemlos. Ich hab noch keine Gesetzmäßigkeit erkannt, wovon das abhängt.
zweitens: er crasht anscheinend innerhalb der folgenden for-schleife:
Code: Alles auswählen
for (unsigned int meshIndex = 0; meshIndex < pScene->mNumMeshes; ++meshIndex)
{
...
}
Fragen über Fragen, ich hoff ich könnt mir helfen!
Vielen Dank für eure Zeit,
andy / ponx