void dump(Writer writer) throws IOException, CancelledException, PdbException {
		writer.write("DebugData---------------------------------------------------\n");
		dumpDebugStreamList(writer);

		writer.write("FramePointerOmissionData------------------------------------\n");
		List<FramePointerOmissionRecord> framePointerOmissionData = getFramePointerOmissionData();
		if (framePointerOmissionData != null) {
			for (FramePointerOmissionRecord framePointerOmissionRecord : framePointerOmissionData) {
				pdb.checkCancelled();
				framePointerOmissionRecord.dump(writer);
			}
		}
		writer.write("End FramePointerOmissionData--------------------------------\n");

//		writer.write("OmapToSource------------------------------------------------\n");
//		if (omapToSource != null) {
//			int num = 0;
//			for (Map.Entry<Long, Long> entry : omapToSource.entrySet()) {
//				pdb.checkCancelled();
//				writer.write(String.format("0X%08X: 0X%012X,  0X%012X\n", num++, entry.getKey(),
//					entry.getValue()));
//			}
//		}
//		writer.write("End OmapToSource--------------------------------------------\n");
//
		writer.write("OmapFromSource----------------------------------------------\n");
		SortedMap<Long, Long> omapFromSource = getOmapFromSource();
		if (omapFromSource != null) {
			int num = 0;
			for (Map.Entry<Long, Long> entry : omapFromSource.entrySet()) {
				pdb.checkCancelled();
				writer.write(String.format("0X%08X: 0X%012X,  0X%012X\n", num++, entry.getKey(),
					entry.getValue()));
			}
		}
		writer.write("End OmapFromSource------------------------------------------\n");

		writer.write("ImageSectionHeaders-----------------------------------------\n");
		List<ImageSectionHeader> imageSectionHeaders = getImageSectionHeaders();
		if (imageSectionHeaders != null) {
			int sectionNum = 0;
			for (ImageSectionHeader imageSectionHeader : imageSectionHeaders) {
				pdb.checkCancelled();
				imageSectionHeader.dump(writer, sectionNum++);
			}
		}
		writer.write("End ImageSectionHeaders-------------------------------------\n");

		writer.write("ImageSectionHeadersOrig-------------------------------------\n");
		List<ImageSectionHeader> imageSectionHeadersOrig = getImageSectionHeadersOrig();
		if (imageSectionHeadersOrig != null) {
			int sectionNum = 0;
			for (ImageSectionHeader imageSectionHeader : imageSectionHeadersOrig) {
				pdb.checkCancelled();
				imageSectionHeader.dump(writer, sectionNum++);
			}
		}
		writer.write("End ImageSectionHeadersOrig---------------------------------\n");

		writer.write("PData-------------------------------------------------------\n");
		List<ImageFunctionEntry> pData = getPData();
		if (pData != null) {
			for (ImageFunctionEntry entry : pData) {
				pdb.checkCancelled();
				// TODO: need to output more if/when more PData is available (e.g., interpretation
				//  of XData.
				writer.append(entry.toString());
			}
		}
		writer.write("End PData---------------------------------------------------\n");

		writer.write("NewFramePointerOmissionData---------------------------------\n");
		List<FrameDataRecord> frameData = getNewFramePointerOmissionData();
		if (frameData != null) {
			for (FrameDataRecord frameDataRecord : frameData) {
				pdb.checkCancelled();
				frameDataRecord.dump(writer);
			}
		}
		writer.write("End NewFramePointerOmissionData-----------------------------\n");

		writer.write("End DebugData-----------------------------------------------\n");
	}
Dumps the {@link DebugData}.  This package-protected method is for debugging only
@param writer {@link Writer} to which to write the debug dump
@throws IOException on issue writing to the {@link Writer}
@throws CancelledException upon user cancellation
@throws PdbException upon error in processing components
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/DebugData.java