@Override
	public void markup(Program program, boolean isBinary, TaskMonitor monitor, MessageLog log,
			NTHeader nt)
			throws DuplicateNameException, CodeUnitInsertionException, IOException {

		monitor.setMessage(program.getName()+": debug...");
		Address addr = PeUtils.getMarkupAddress(program, isBinary, nt, virtualAddress);
		if (!program.getMemory().contains(addr)) {
			return;
		}
		createDirectoryBookmark(program, addr);

		AddressSpace space = program.getAddressFactory().getDefaultAddressSpace();

		DebugDirectory [] ddarr = parser.getDebugDirectories();
		for (DebugDirectory dd : ddarr) {
			PeUtils.createData(program, addr, dd.toDataType(), log);
			addr = addr.add(DebugDirectory.IMAGE_SIZEOF_DEBUG_DIRECTORY);

			Address dataAddr = getDataAddress(dd, isBinary, space, nt);
			if (dataAddr != null) {
				boolean success = createFragment(program, "Debug Data", dataAddr, dataAddr.add(dd.getSizeOfData()));
				if (!success) {
					log.appendMsg("Unable to create fragment: Debug Data");
				}
			}
		}

		markupDebigMisc(program, isBinary, log, space);
		markupDebugCodeView(program, isBinary, log, space);
	}
Points to an array of IMAGE_DEBUG_DIRECTORY structures.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/pe/DebugDataDirectory.java