Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

DEBUG-I-NOUNIQ

 
SOLVED
Go to solution

DEBUG-I-NOUNIQ

When using the DEBUG utility on Integrity for BASIC language programs, I am unable to set a breakpoint on some/all external routines.

I get an error like the following...
DBG> SET BREAK JOS_REPLACE
data JOS_REPLACE\JOS_REPLACE\JOS_REPLACE
routine JOS_REPLACE
%DEBUG-I-NOUNIQ, symbol 'JOS_REPLACE' is not unique
%DEBUG-E-REENTER, reenter the command using a more precise pathname

This is only a problem on Integrity; and works fine on Alpha platform.
Does anyone know how to get breakpoints to work on external routines on Integrity?
4 REPLIES
Craig A Berry
Honored Contributor

Re: DEBUG-I-NOUNIQ

You may need some combination of:

SET IMAGE
SET MODULE
SET SCOPE

in the debugger, (though in my experience I've only used scope with C). The BASIC compiler has an option called /SEPARATE_COMPILATION which may be part of the mix here. If you had separate compilation in your old environment but not on the Itanium or vice versa, that could be one factor. There may have been other changes in moving your application to IA64, such as moving some routines into a shareable image (which is when you'd need the SET IIMAGE mentioned above).

You can also specify symbol names fully qualified, first finding out what they are with something like:

show symbol *jos_replace

but it looks like it's already told you that you have a data section name the same as a routine name. You just need to figure out the fully qualified symbol name for the routine.
John Gillings
Honored Contributor
Solution

Re: DEBUG-I-NOUNIQ

Dennis,

DEBUG is showing you two possibilities for your ambiguous name:

data JOS_REPLACE\JOS_REPLACE\JOS_REPLACE
routine JOS_REPLACE

Try:

DBG> SET BREAK JOS_REPLACE\JOS_REPLACE\JOS_REPLACE

You may also want to try something like:

DBG> SET BREAK JOS_REPLACE\%line 1

(this will tell you the previous and next lines, if line 1 doesn't exist).

If that fails, you may be able to:

DBG> EVAL/ADDRESS JOS_REPLACE

then SET BREAK to the address of the object you want.
A crucible of informative mistakes
John Gillings
Honored Contributor

Re: DEBUG-I-NOUNIQ

Almost forgot...

If none of that works, please post a cut down example showing your problem. I'd expect no more than 10 lines of code, and a transcript of the DEBUG session showing the error.

A crucible of informative mistakes

Re: DEBUG-I-NOUNIQ

Thanks for the feedback guys!
The problem is that the "data" section with the JOS_REPLACE\JOS_REPLACE\JOS_REPLACE appears to be totally bogus because there are no data sections with the same name as the module (unless the compiler created separate code and data segments and is confusing them - which doesn't happen on Alpha platform debug).

Most of the other suggestions did not really help except for...

the SET BREAK JOS_REPLACE\%LINE 1
suggestion was one that I figured out about the same time John was replying to this topic.

That appears to be a workaround that I can live with.

Thanks for the feedback.