Brainstorming: refactoring classes/inheritances

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 17 Sep 2011, 19:47

I found the issue, there was a duplicate name and meshName in roomObject, easy to overlook. Though now I am getting some crash in a string instead, investigating.

EDIT: Crashes on getCreatureDefinition()->getName() After clicking new game that is.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 17 Sep 2011, 20:11

Managed to work around the issue by sending the mesh name in the render request instead. Still not sure why the crash happens, but this might be a better solution anyhow.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 17 Sep 2011, 21:35

I think we should completely avoid multiple inheritance. We should use "interfaces" instead.
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 17 Sep 2011, 22:04

That is basically what we ended up doing. There isn't really a distinction between an interface and a class in C++. The closest equivalent to a java interface is a class with pure virtual functions (i.e functions that are required to be overridden.)
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 17 Sep 2011, 23:24

Ok good :)
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 18 Sep 2011, 09:54

The game starts again, but after I click Start the game crashes. According to the log file the crash happens after the first turn (first creature AI and upkeep times time are logged).

edit: Seems this is random, sometimes it crashes before the first turn, sometimes after... (thread related?)

edit2: by the way, does every object has a level? AttackableEntity has a function getLevel() - so Traps and Rooms have a level, too. Should we move this into GameEntity then? I'm currently resolving some more ambiguities between the base classes, this will make bug hunting easier, I think.
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 18 Sep 2011, 10:55

Hm, I am not getting this issue. Have you tried debugging to see where the crash is? I first had a crash when the renderManager tried to access the creatureDefinition, so maybe on your machine, it crashes when accessing creature as well.

And yes, gameEntity should store the level reference.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 18 Sep 2011, 12:06

Seems to be a segmentation fault in processRenderRequests(). But all the rendering code is still a black box for me...

what other stuff should be in GameEntity? Also hp and mana, if level is there? I encountered a problem with AttackableEntity in doTurn() where a AttackableEntity* is used to store pointers to attackable objects but if I move the getLevel() into GameEntity then we can't have pointers to AttackableObject anymore. But simply taking GameEntity* doesn't work because there are also calls to other members of AttackableEntity (like hp, isMobile, ...)

How do we handle the isMobile() anyways? Logically it should be in MovableGameEntity, but then it would always return true because MovableGameEntity is always movable. I think we should put this in GameEntity then and set it default to false and let the constructor from MovableGameEntity overide it with true. Is this good?
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 18 Sep 2011, 12:27

Are you able to get a stack trace? Find out what render request function the crash is in?

Not sure about hp and mana, do room objects and weapons need that?

For isMobile you can simply make it a virtual function that returns false, and override in movableObject to return true.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 18 Sep 2011, 12:33

A quick question before you do too much re-factoring: should we use the thread model I suggested some time ago? Because it sounds like you get allot of error due to concurrent programming, which is notoriously hard. With my idea of the thread model this concurrent programming is avoided and turned into parallel programming which is generally easier.

Just so you do not do too much work which may or may not turn out to be unnecessary if we use the thread model I suggested.
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 18 Sep 2011, 12:58

We should, but that will take a lot of work. Though, the refactoring we are doing is going to make it easier to adapt the new model, we are not deviating from the long-term plan, as we are just making the relationship between the classes more logical and simple.

We haven't done any changes to the thread part, so I am not sure why we are getting thread issues (if the issues we are getting actually are thread issues).
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 18 Sep 2011, 14:09

I'm not very used to complex debugging. Is this what you need? The seg fault wasn't happening in the RenderManager, I believe, this seemed to be random, too. Now it happened already in the creatureDoTurnHelperThread() function.

{l Code}: {l Select All Code}
Thread [27] 0 (Suspended : Signal : SIGSEGV:Segmentation fault)   
   _fu881___ZNSs4_Rep20_S_empty_rep_storageE() at 0x4ba35c   
   0xea7d438   
   GameMap::creatureDoTurnHelperThread() at 0x4be665   
   ptw32_threadStart@4() at 0x611812fa   
   msvcrt!_itow_s() at 0x757e1287   
   msvcrt!_endthreadex() at 0x757e1328   
   KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
   0xbdb6278   
   wcscat() at 0x77a59ed2   
   0xbdb6278   
   wcscat() at 0x77a59ea5   
   msvcrt!_endthreadex() at 0x757e12e5   
   0x0


Here is the full tree
{l Code}: {l Select All Code}

OpenDungeons.exe [2656]   
   Thread [27] 0 (Suspended : Signal : SIGSEGV:Segmentation fault)   
      _fu881___ZNSs4_Rep20_S_empty_rep_storageE() at 0x4ba35c   
      0xea7d438   
      GameMap::creatureDoTurnHelperThread() at 0x4be665   
      ptw32_threadStart@4() at 0x611812fa   
      msvcrt!_itow_s() at 0x757e1287   
      msvcrt!_endthreadex() at 0x757e1328   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0xbdb6278   
      wcscat() at 0x77a59ed2   
      0xbdb6278   
      wcscat() at 0x77a59ea5   
      msvcrt!_endthreadex() at 0x757e12e5   
      0x0   
   Thread [25] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [23] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [22] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [21] 0 (Suspended : Container)   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      0x744017cd   
      MigrateWinsockConfiguration() at 0x74413176   
      WSAEnumNameSpaceProvidersExA() at 0x76d06958   
      WS2_32!FreeAddrInfoEx() at 0x76d068cd   
      Socket::accept() at 0x507e6d   
      serverSocketProcessor() at 0x506ae6   
      ptw32_threadStart@4() at 0x611812fa   
      msvcrt!_itow_s() at 0x757e1287   
      <...more frames...>   
   Thread [20] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x1   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [19] 0 (Suspended : Container)   
      ntdll!RtlFindSetBits() at 0x77a3fd81   
      SleepEx() at 0x759431bb   
      0x0   
   Thread [18] 0 (Suspended : Container)   
      ntdll!RtlFindSetBits() at 0x77a3fd81   
      SleepEx() at 0x759431bb   
      0x0   
   Thread [17] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [16] 0 (Suspended : Container)   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41e0e   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41e0e   
      ntdll!RtlNumberOfSetBitsUlongPtr() at 0x77a81536   
      () at concurrence.h:72 0x10   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x0   
   Thread [15] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x1   
      () at concurrence.h:75 0x1   
      0xa01fd5c   
   Thread [14] 0 (Suspended : Container)   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!TpCallbackMayRunLong() at 0x77a6471e   
      0x33c   
      0x9ddfedc   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x63ff50   
      wcscat() at 0x77a59ed2   
      0x63ff50   
      wcscat() at 0x77a59ea5   
      <...more frames...>   
   Thread [13] 0 (Suspended : Container)   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!TpCallbackMayRunLong() at 0x77a6471e   
      0x338   
      0x9b9fedc   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x63ff50   
      wcscat() at 0x77a59ed2   
      0x63ff50   
      wcscat() at 0x77a59ea5   
      <...more frames...>   
   Thread [12] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x1   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [11] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x1   
      () at concurrence.h:75 0x1   
      0x0   
   Thread [10] 0 (Suspended : Container)   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!TpCallbackMayRunLong() at 0x77a6471e   
      0x2bc   
      0x8a0fedc   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x623f58   
      wcscat() at 0x77a59ed2   
      0x623f58   
      wcscat() at 0x77a59ea5   
      <...more frames...>   
   Thread [9] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x87cfa08   
   Thread [8] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      WaitForMultipleObjectsEx() at 0x75940bdd   
      () at concurrence.h:75 0x2   
      () at concurrence.h:75 0x1   
      0x858fa08   
   Thread [7] 0 (Suspended : Container)   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      WaitForSingleObjectEx() at 0x75940a91   
      0x284   
      0x0   
   Thread [6] 0 (Suspended : Container)   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!RtlEnableEarlyCriticalSectionEventCreation() at 0x77a4014d   
      ntdll!TpCallbackMayRunLong() at 0x77a6431f   
      () at concurrence.h:76 0x5   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x0   
   Thread [5] 0 (Suspended : Container)   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      WaitForSingleObjectEx() at 0x75940a91   
      0x274   
      0x0   
   Thread [4] 0 (Suspended : Container)   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!LdrQueryProcessModuleInformation() at 0x77a41f36   
      ntdll!TpCallbackMayRunLong() at 0x77a6471e   
      0x2a0   
      0x7f0fedc   
      KERNEL32!BaseCleanupAppcompatCacheSupport() at 0x76a5339a   
      0x623070   
      wcscat() at 0x77a59ed2   
      0x623070   
      wcscat() at 0x77a59ea5   
      <...more frames...>   
   Thread [3] 0 (Suspended : Container)   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      WaitForSingleObjectEx() at 0x75940a91   
      0x264   
      0x0   
   Thread [2] 0 (Suspended : Container)   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      ntdll!RtlUpdateClonedSRWLock() at 0x77a3f8c1   
      WaitForSingleObjectEx() at 0x75940a91   
      0x1d4   
      0x0   
   Thread [1] 0 (Suspended : Container)   
      d3d9!PSGPSampleTexture() at 0x711a44ec   
      d3d9!PSGPSampleTexture() at 0x711aba0c   
      ZN4Ogre16D3D9RenderSystem7_renderERKNS_15RenderOperationE() at 0x6dee5284   
      ZN4Ogre12SceneManager18renderSingleObjectEPNS_10RenderableEPKNS_4PassEbbPKNS_12HashedVectorIPNS_5LightEEE() at 0x63fcbcf8   
      ZN4Ogre12SceneManager31SceneMgrQueuedRenderableVisitor5visitEPNS_10RenderableE() at 0x63fb38f9   
      ZNK4Ogre26QueuedRenderableCollection20acceptVisitorGroupedEPNS_23QueuedRenderableVisitorE() at 0x63f6e70a   
      ZNK4Ogre26QueuedRenderableCollection13acceptVisitorEPNS_23QueuedRenderableVisitorENS0_16OrganisationModeE() at 0x63f6e7c6   
      ZN4Ogre12SceneManager28renderBasicQueueGroupObjectsEPNS_16RenderQueueGroupENS_26QueuedRenderableCollection16OrganisationModeE() at 0x63fb617b   
      ZN4Ogre12SceneManager35renderVisibleObjectsDefaultSequenceEv() at 0x63fb4b02   
      ZN4Ogre12SceneManager12_renderSceneEPNS_6CameraEPNS_8ViewportEb() at 0x63fc54ec   
      ZN4Ogre6Camera12_renderSceneEPNS_8ViewportEb() at 0x63e28133   
      ZN4Ogre8Viewport6updateEv() at 0x64078ca4   
      ZN4Ogre12RenderTarget15_updateViewportEPNS_8ViewportEb() at 0x63f80e6c   
      ZN4Ogre12RenderTarget27_updateAutoUpdatedViewportsEb() at 0x63f80f09   
      ZN4Ogre12RenderTarget10updateImplEv() at 0x63f80a10   
      ZN4Ogre12RenderTarget6updateEb() at 0x63f80cc8   
      ZN4Ogre12RenderSystem23_updateAllRenderTargetsEb() at 0x63f710e2   
      ZN4Ogre4Root23_updateAllRenderTargetsEv() at 0x63faff76   
      ZN4Ogre4Root14renderOneFrameEv() at 0x63fb0040   
      ZN4Ogre4Root14startRenderingEv() at 0x63fb0085   
      _fu1214___ZNSs4_Rep20_S_empty_rep_storageE() at 0x4ddcfd   
      0x2400260   
      WinMain@16() at 0x4d3991   
      main() at 0x515216   
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 18 Sep 2011, 15:43

If it happends at different places every time then it seems like a thread issue, so I am not sure how to go about to find the reason. Also, do get any meaningful information from the debugger, you have to compile in debug mode. (You have to set this when running cmake.)
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 10 Oct 2011, 11:58

Currently trying to get the debug build working to do some more testing on this. But the game won't start in debug mode. I have all needed Ogre, CEGUI and SFML debug DLLs (at least I get no message that a DLL is missing). The particular message I get from CEGUI::OgreRenderer is this:
"The Ogre::Root object has not been created. You must initialise Ogre first!"
But the root object should exist after the Ogre config window (the game crashes after the config window, when the game window is already created and visible).

Any ideas what could cause this behaviour?
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 10 Oct 2011, 12:27

Maybe it fails to initialise in some way, failing to load a DLL or something? root::initialise() is called after the config dialog is shown.
It's supposed to use config files prefixed with _d as well I think if the game is compiled in debug mode, might want to check that as well.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 10 Oct 2011, 12:50

I have everything with "_d". The Ogre log file gives no errors. It stops after "Finished parsing scripts for resource group Sound", which is after the materials and after the "*-*-* OGRE Initialising" and after "*** D3D9 : Subsystem Initialised OK ***", and after "DefaultWorkQueue('Root') initialising on thread 0x23b44b0."

If window = root->initialise() fails then should window == 0. This is not the case (added an if checking this.)

For some reason CEGUI::OgreRenderer::bootstrapSystem() fails when running in debug mode.

edit: the RenderManager also needs to access root, and the RenderManager is initialised before CEGUI.
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 09 Nov 2011, 01:28

Any progress on this?
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 09 Nov 2011, 09:56

No, I didn't have much time in the last month. I still haven't gotten the debug build to run on Windows.
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 03 Dec 2011, 11:29

Just a quick question: Who has also encountered the thread bug with the latest trunk (and on what operating system and what compiler)?
I'm asking because I have a theory: Some time ago I switched from MingW 4.5 to 4.6.
In the cmake file we wrote "set(Boost_COMPILER -mgw45)" to make it compile again.
Is it possible that there's a conflict if I compile the game with MingW 4.6 but use the boost-thread libraries fromOgre that were compiled with 4.5?
Maybe the thread bug is not on our side but on Ogre's.

This bug has to be fixed ASAP, because I really want to write (and test!) some code again. ;)
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby oln » 03 Dec 2011, 13:06

I think the easiest way to test this would be if you tried to compile with Mingw 4.5 and see if the same happened.
You could also try to check out the older version that used to work and see if the same happens.
Though, I doubt this is the issue, the other libraries are probably also compiled using 4.5, or earlier.
Last edited by oln on 03 Dec 2011, 13:10, edited 1 time in total.
User avatar
oln
 
Posts: 1020
Joined: 26 Oct 2010, 22:16
Location: Norway

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 03 Dec 2011, 13:06

I am building now, I will tell you in a minute how it went :)

Edit: when you say MinGW version you really mean gcc version right? In that case I am curently compiling with gcc 4.5.2 on Win XP 32 bit.
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 03 Dec 2011, 14:21

It also just crashed for me just after I click New Game :( But the Map Editor works just fine.
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 03 Dec 2011, 14:45

Yes, I always say MingW instead of gcc. What I mean with that is: I use gcc X.Y from MingW. :D
But thanks for testing with the 4.5 compiler. So it's not a compiler version conflict...

Map Editor works fine for me, too.

Are there any tools for analysing thread behaviour?
StefanP.MUC
 

Re: Brainstorming: refactoring classes/inheritances

Postby svenskmand » 03 Dec 2011, 15:05

Can you not just use a debugger and then put break points in the thread that is causing trouble?

If your using Eclipse (which I think you said you did at some point) then there is an excellent debugger in there.
Jamendo.com - The best music store on the net, uses CC licenses.
User avatar
svenskmand
OD Moderator
 
Posts: 1850
Joined: 09 Dec 2009, 00:07
Location: Denmark

Re: Brainstorming: refactoring classes/inheritances

Postby StefanP.MUC » 03 Dec 2011, 15:19

If I just could get the debug version to run. ;) If I compile in Debug mode the application won't run, even if I have all the debug DLL's. It just crashes directly when starting (before the main menu)...

But I will now try to spam the source code with LogManager output and see where the bug happens. This will most likely take some time but hopefully lead me to a goal....
StefanP.MUC
 

Who is online

Users browsing this forum: No registered users and 1 guest