| 2650 | }; |
| 2651 | |
| 2652 | void DebugTarget::RemoveTargetData() |
| 2653 | { |
| 2654 | BP_ZONE("DebugTarget::RemoveTargetData"); |
| 2655 | |
| 2656 | #ifdef _DEBUG |
| 2657 | DbgModule* problemModule = NULL; |
| 2658 | |
| 2659 | int checkIdx = 0; |
| 2660 | for (DbgSymbol* headNode : mSymbolMap) |
| 2661 | { |
| 2662 | auto node = headNode; |
| 2663 | while (node != NULL) |
| 2664 | { |
| 2665 | checkIdx++; |
| 2666 | |
| 2667 | auto next = node->mNext; |
| 2668 | if (node->mDbgModule->mDeleting) |
| 2669 | { |
| 2670 | problemModule = node->mDbgModule; |
| 2671 | //OutputDebugStrF("Should have been removed by DbgModule::RemoveTargetData %@ %s\n", node->mAddress, node->mName); |
| 2672 | BF_DBG_FATAL("Should have been removed by DbgModule::RemoveTargetData"); |
| 2673 | mSymbolMap.Remove(node); |
| 2674 | } |
| 2675 | node = next; |
| 2676 | } |
| 2677 | } |
| 2678 | |
| 2679 | if (problemModule != NULL) |
| 2680 | { |
| 2681 | problemModule->RemoveTargetData(); |
| 2682 | } |
| 2683 | |
| 2684 | for (DbgSubprogramMapEntry* headNode : mSubprogramMap) |
| 2685 | { |
| 2686 | auto node = headNode; |
| 2687 | while (node != NULL) |
| 2688 | { |
| 2689 | auto next = node->mNext; |
| 2690 | if (node->mEntry->mCompileUnit->mDbgModule->mDeleting) |
| 2691 | { |
| 2692 | //OutputDebugStrF("Should have been removed by DbgModule::RemoveTargetData %s\n", node->mEntry->mName); |
| 2693 | BF_DBG_FATAL("Should have been removed by DbgModule::RemoveTargetData"); |
| 2694 | mSubprogramMap.Remove(node); |
| 2695 | } |
| 2696 | node = next; |
| 2697 | } |
| 2698 | } |
| 2699 | |
| 2700 | for (DbgExceptionDirectoryEntry* exDirEntry : mExceptionDirectoryMap) |
| 2701 | { |
| 2702 | auto node = exDirEntry; |
| 2703 | while (node != NULL) |
| 2704 | { |
| 2705 | auto next = node->mNext; |
| 2706 | if (node->mDbgModule->mDeleting) |
| 2707 | { |
| 2708 | //BF_DBG_FATAL("Should have been removed by DbgModule::RemoveTargetData"); |
| 2709 | mExceptionDirectoryMap.Remove(node); |