Log On
Embarcadero Home
Watch, Follow, &
Connect with Us
Share This
QualityCentral
Communities
Articles
Blogs
Resources
Downloads
Help
QualityCentral
Delphi-BCB
Debugger
Breakpoints
Call Stack
Corba DBK
Corba UI
CPU
Debugger UI
Evaluator
Evaluator ToolTips
Evaluator View
Event Log View
Exceptions
Execution
FPU
Inspector
Interaction with IDE
Kernel
Local Variables View
Module View
Multi-process
Remote Debugging
Stepping
TD32 Keys
Thread View
Watches
You are not logged in.
Help
Print
Public Report
Report From:
Delphi-BCB/Debugger/CPU
[ Add a report in this area ]
Report #:
77064
Status:
Closed
Garbled identifiers in the CPU view, caused by unit namespaces
Project:
Delphi
Build #:
14.0.3513.24210
Version:
14.0
Submitted By:
Blaise Thorn
Report Type:
Basic functionality failure
Date Reported:
8/27/2009 1:35:09 AM
Severity:
Commonly encountered problem
Last Updated:
7/16/2012 9:34:27 PM
Platform:
All platforms
Internal Tracking #:
288888
Resolution:
Fixed
(Resolution Comments)
Resolved in Build:
:
16.0.4358.45540
Duplicate of:
None
Voting and Rating
Overall Rating:
No Ratings Yet
0.00 out of 5
Total Votes:
30
Description
Units with compound names cause the debugger to display offsets instead of routine names.
Run the sample project dbg1 under the debugger.
Set a breakpoint at "begin", hit "Run", switch to CPU view:
---8<-------8<-------8<---
004060C4 E82BEBFFFF call foo
004060C9 E862EBFFFF call foo
004060CE B82A000000 mov eax,$0000002a
004060D3 E894EBFFFF call foo
// ouch, don't I have *full* symbol info?
004060D8 E8E3EBFFFF call Namespace1 + $404CC0
---8<-------8<-------8<---
Run the sample project dbg2 under the debugger.
Set a breakpoint at "begin", hit "Run", switch to CPU view:
---8<-------8<-------8<---
0043C2E4 E873DEFCFF call foo
0043C2E9 B201 mov dl,$01
0043C2EB A184A14300 mov eax,[$0043a184]
// TList<Integer>.Create?
0043C2F0 E85FE9FFFF call Namespace1 + $43AC54
---8<-------8<-------8<---
Steps to Reproduce:
---8<-------8<-------8<--- Unit1.pas
unit Unit1;
interface
procedure foo;
implementation
procedure foo; begin
writeln('unit1.foo')
end;
end.
---8<-------8<-------8<--- Unit2.pas
unit Unit2;
interface
procedure foo; overload;
procedure foo(const a: integer); overload;
implementation
procedure foo; begin
writeln('unit2.foo')
end;
procedure foo(const a: integer); begin
writeln('unit2.foo(', a, ')')
end;
end.
---8<-------8<-------8<--- Namespace1.Namespace2.Unit3.pas
unit Namespace1.Namespace2.Unit3;
interface
procedure foo;
implementation
procedure foo; begin
writeln('Namespace1.Namespace2.Unit3.foo')
end;
end.
---8<-------8<-------8<---
program dbg1;
{$apptype console}
uses
Unit1 in 'Unit1.pas',
Unit2 in 'Unit2.pas',
Namespace1.Namespace2.Unit3 in 'Namespace1.Namespace2.Unit3.pas';
begin
Unit1.foo;
Unit2.foo;
Unit2.foo(42);
foo
end.
---8<-------8<-------8<---
program dbg2;
{$apptype console}
uses
Namespace1.Namespace2.Unit3 in 'Namespace1.Namespace2.Unit3.pas',
Generics.Collections;
begin
foo;
TList<Integer>.Create
end.
Workarounds
None
Attachment
dbg.zip
Comments
None
View Your Reports
Search
Server Response from: ETNACODE01
Developer Tools
Blackfish SQL
C++Builder
Delphi
FireMonkey
Prism
InterBase
JBuilder
J Optimizer
HTML5 Builder
3rdRail & TurboRuby
Database Tools
Change Manager
DBArtisan
DB Optimizer
ER/Studio
Performance Center
Rapid SQL
Technical Articles
Tutorials
White Papers
Press Releases
Newsletters
Add Content (GetPublished)
Audio
Audio & Video
Video
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Tags
Technology Partners
Downloads
Free Trials
Registered User Downloads
Beta Programs
Add Content (GetPublished)
Articles
Blogs
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Member Services
About
Connect with Us