Posted on 2003-11-18
D7Pro... wrote a DLL myself and attempting to use the DLL in another program which I'm also writing, so I have full source for both. The problem is something falls over in the DLL and I cannot use the debugger to find out exactly where and why. I've followed the Delphi help which goes as follows:
"The following topics cover issues when debugging DLLs.
Specifying the host executable
When debugging a DLL, you don’t need to add the host executable file to a project to debug it. You can specify a path name to the executable by selecting Run|Parameters and entering the path to the executable in the Host application edit box. Press the Load button to load the executable in the debugger.
Using Module load breakpoints when debugging DLLs
Use Module load breakpoints to halt an application when it loads a specified DLL. To set a Module load breakpoint either:
Select either Run|Add Breakpoint|Module Load Breakpoint
Choose View|Debug Windows|Modules to display the Modules window and right-click anywhere in the upper-left pane and select Add Module
Then in the Add Module dialog box, enter the module name of the DLL or click Browse to find the DLL. Click OK. When the application loads the specified DLL, the application will halt.
Setting a debug source path
The debug source path is specified under Project|Options|Directories\Conditionals. Debug source paths for modules in the current project, or project group, are automatically set. If you are debugging modules (executables, DLL) in different projects or projects groups, you need to add the debug source path for each module that is not part of the current project group.
Locating symbol files
All dcp files must be located in the Debug Symbols Search Path (set on General page of the Tools|Debugger Options)."
I can set a breakpoint in Delphi on a line with a blue dot. As soon as I choose Run or Load Module, that blue dot disappears and the line is never stopped at (although I know damn well it is using it). The program itself runs fine (apart from the error inside the DLL).
I've set the debug search paths to everywhere possible (source of the exe, source of the DLL). All the debugging options are on for both the DLL and the EXE.