Solved

Debugger limitations

Posted on 1997-04-21
9
177 Views
Last Modified: 2010-04-04

Is there some limit to the amount of symbol information that Delphi 1 can cope with? I've a large project ( 100+ units ) which has started to show debugging problems. The browser doesn't always know about a symbol when asked, and setting breakpoints doesn't always work on lines that are definitely being called. Yes, I've got all the debug flags ( except TDW ) on, yes, I'm building everything in sight, and no, I'm not optimising for load time.
Is this a known problem? Any way to fix ? Does delphi 2 have any such limits ?
0
Comment
Question by:andrewjb
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 3

Expert Comment

by:sperling
ID: 1335566
I've heard of this before, but haven't experienced it myself. I believe it has something to do with some internal limitations in the IDE debugger.

As far as I know you can't fix it... Consider DLLs is the best idea I can come up with.

I haven't experienced nor heard of any such problems in D2...


Regards,

Erik.
0
 
LVL 12

Author Comment

by:andrewjb
ID: 1335567
Current thoughts are that it might be something to do with the number of UNITS you've got, not their size. Although this sounds strange, someone else has indicated that a fix is to combine units into one.
0
 
LVL 3

Expert Comment

by:sperling
ID: 1335568
That might work, if the problem is that the "namespace" of the debugger is too small. I've also seen comments indicating that keeping the units in the same directory would help.

Regards,

Erik.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 4

Expert Comment

by:nils pipenbrinck
ID: 1335569
At least I can help you with the breakpoint problem.

If you want to raise a breakpoint you can hardcode it into your
program. Just use these three lines:

  asm;
    int 3;
  end;

Int3 will be trapped by the debugger and will always work. But be sure you removed all these calls before you run the program without delphi. It'll crash!


0
 
LVL 1

Accepted Solution

by:
miv earned 100 total points
ID: 1335570
It´s the length of the combined path of all your units which hits the roof in Delphi.
Shorten your paths or place all units in one dir near the root ex. c:\src\
You can, however, debug as it is now, just use a high level unit in the unit you wish to debug.
(Mail me if you did´nt get that :-) )

Ex.
UNIT LowLevelUnit;

USES
  HighLevelUnit;
0
 
LVL 12

Author Comment

by:andrewjb
ID: 1335571
Miv,
Interesting! Looks as though this might be helping. Two questions :
First, how did you find this out? Is there something documented somewhere, or was it by experimenting ?
Second, Sorry I didn't understand your 'include a high level unit' bit to get it to debug now. Could you explain again??

100 points are about to be yours!!.......

0
 
LVL 1

Expert Comment

by:miv
ID: 1335572
Found out the hard way - 350 units, 250.000 lines of code...

The units first parsed when you compile is low level units - file handling, math routines etc.
Your Mainform is prob. a very high level unit. (My own definition).

If you wish to debug f.ex. a math unit, place your mainforms unit name in the uses statement of the implementation in the math unit and rebuild. That should do the trick.

Happy coding, I hope Delphi 2/3 solves the problem.
0
 
LVL 1

Expert Comment

by:miv
ID: 1335573
What´s happening Andrew ?
0
 
LVL 12

Author Comment

by:andrewjb
ID: 1335574
Sorry, miv, just checking that it actually works.....
No problems so far. Still no reply from Borland!
Here are your points !
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

837 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question