Waarom is debuggen van add-ins anders?
Normaal start je een applicatie vanuit Visual Studio en debug je hem direct. Bij een AutoCAD add-in is dat anders: jouw code draait inside AutoCAD, niet als zelfstandig programma. Je moet Visual Studio dus koppelen aan het lopende AutoCAD-proces — dit heet attach to process.
Methode 1: Handmatig laden met NETLOAD (snelste voor development)
Tijdens ontwikkeling laad je de add-in het best handmatig, zodat je AutoCAD niet elke keer hoeft te herstarten.
- Compileer je project in Visual Studio (Ctrl+Shift+B).
- Open AutoCAD.
- Typ
NETLOADin de commandoregel. - Blader naar de DLL in je
bin\Debugmap en open hem.
Zet daarna een breakpoint in Visual Studio en koppel Visual Studio aan AutoCAD (zie hieronder). Dit is de snelste ontwikkelcyclus.
Voordeel van NETLOAD boven een bundle: je hoeft AutoCAD niet te herstarten na elke wijziging. Laad de DLL opnieuw zodra je een nieuwe versie hebt gebuild.
Methode 2: Debug-project instellen (automatisch starten)
Je kunt Visual Studio zo instellen dat het AutoCAD automatisch start en de debugger eraan koppelt wanneer je op F5 drukt:
- Klik rechts op je project ? Properties.
- Ga naar het tabblad Debug.
- Kies Start external program en browse naar:
C:\Program Files\Autodesk\AutoCAD 2025\acad.exe
- Zorg dat je DLL als bundle of via AutoCAD's zoekpad geladen wordt bij het opstarten.
- Druk op F5 — AutoCAD start en Visual Studio koppelt automatisch.
Methode 3: Attach to Process (altijd beschikbaar)
Als AutoCAD al draait, kun je Visual Studio er op elk moment aan koppelen:
- Zorg dat je add-in geladen is in AutoCAD (via NETLOAD of bundle).
- Ga in Visual Studio naar Debug ? Attach to Process (Ctrl+Alt+P).
- Zoek in de lijst naar
acad.exe. - Klik op Attach.
Vanaf nu werken je breakpoints wanneer AutoCAD code uitvoert die door jouw add-in geleverd wordt.
Breakpoints instellen
Zet een breakpoint door te klikken op de grijze marge links van een regel code (er verschijnt een rode stip). Wanneer AutoCAD die regel bereikt, pauzeert de uitvoering en kun je:
- Variabelen inspecteren in het Locals of Watch venster
- Stap voor stap door de code lopen met F10 (over) of F11 (in)
- De call stack bekijken om te zien hoe je hier terecht bent gekomen
- Variabelen live aanpassen via het Immediate Window
Veelvoorkomende problemen en oplossingen
Probleem: "No symbols have been loaded for this document"
Visual Studio vindt de debug-symbolen niet. Controleer:
- Compileer je in Debug-modus (niet Release)? Check de dropdown bovenaan Visual Studio.
- Is het
.pdb-bestand aanwezig naast de DLL? Dat bestand bevat de debug-symbolen. - Is de geladen DLL precies dezelfde als de DLL in je
bin\Debug? Als je de DLL ergens anders hebt gekopieerd, zorg dan dat je de nieuwste versie laadt.
Probleem: AutoCAD crasht bij het laden van de DLL
De meest voorkomende oorzaken:
- Verkeerde .NET versie: Gebruik je .NET 8 voor AutoCAD 2024 of ouder? Dat werkt niet — gebruik .NET Framework 4.8 voor AutoCAD 2024 en ouder, .NET 8 voor AutoCAD 2025+.
- Copy Local = True op AutoCAD-referenties: Als je
AcMgd.dllmeebundelt in je uitvoermap, conflicteert die met de versie van AutoCAD. Zet Copy Local altijd op False. - Bitness-mismatch: Zorg dat je project als x64 compileert (AutoCAD is 64-bit).
Probleem: Breakpoint wordt niet geraakt
- Is de debugger gekoppeld aan
acad.exe? Check de statusbalk onderin Visual Studio — die toont de Debug-sessie. - Heb je de code opnieuw gecompileerd ná het instellen van het breakpoint?
- Zit het breakpoint in een methode die ook echt aangeroepen wordt vanuit AutoCAD?
Probleem: "The process cannot access the file because it is being used by another process"
AutoCAD houdt de DLL vergrendeld zolang hij geladen is. Je kunt een geladen DLL niet overschrijven. Oplossingen:
- Sluit AutoCAD volledig af, compileer opnieuw, en start AutoCAD weer.
- Gebruik een tool als Assembly Unload (beschikbaar als AutoCAD add-in) om de DLL te ontladen zonder AutoCAD te herstarten.
- Geef de DLL een nieuw versienummer zodat het een ander bestand wordt (minder handig).
Tip: gebruik de Output-venster voor snelle logging
Schrijf tussentijdse informatie naar de AutoCAD commandoregel zodat je het gedrag kunt volgen zonder een volledige debugsessie:
// Schrijf een debug-bericht naar de AutoCAD commandoregel
var doc = Application.DocumentManager.MdiActiveDocument;
var editor = doc.Editor;
editor.WriteMessage($"\n[DEBUG] Waarde van x: {x}");
Dit is handig voor snelle sanity checks zonder dat je de debugger hoeft te koppelen.
Conclusie
Debuggen van AutoCAD add-ins is even anders dan een gewone applicatie debuggen, maar eenmaal ingesteld werkt het uitstekend. De combinatie van Attach to Process, NETLOAD voor snelle iteratie, en de volledige Visual Studio debugger maakt het ontwikkelen van AutoCAD tools een stuk aangenamer.
Comments
No comments yet — be the first!
Leave a comment
Sign in to skip moderation — anonymous comments are reviewed before appearing.