Re: Template Problems
Re: Template Problems
- Subject: Re: Template Problems
- From: Mike Jackson <email@hidden>
- Date: Thu, 4 Aug 2005 15:20:20 -0400
OK,
I can reproduce the problem very simply. Create a new C++ Tool
project. Add a new file called FindLoops.h
Put the following in the file.
#include <iostream>
template <class T> class Printer {
public:
static void print(const T&t) {
std::cout << t << std::endl;
}
};
In main.cpp put the following:
#include <iostream>
#include "FindLoops.h"
int main (int argc, char * const argv[]) {
std::cout << "Hello, World!\n";
Printer<int>::print(10);
Printer<double>::print(10.5);
std::cout << "DONE" << std::endl;
return 0;
}
Check the compile settings to have FULL debug symbols. Set a
breakpoint in the "FindLoops.h" file at the line that does the cout.
Run the debugger. Xcode flys right past the break point.
Now, if I put the template in the main.cpp file, then the debugger
will hit the breakpoint.
I am new to C++ and all this, so can some one explain what might be
happening (**cough _apple_ cough **) ;-)
Mike Jackson
On Aug 4, 2005, at 2:25 PM, Mike Jackson wrote:
I went back through all my projects and set the debug symbols to
"ALL". Still no luck stopping at a breakpoint.
Mike
On Aug 4, 2005, at 1:54 PM, Mike Jackson wrote:
I tried the following in a "test" project: In main.cpp
#include <iostream>
template <class T> class Printer {
public:
static void print(const T&t) {
std::cout << t << std::endl;
}
};
int main (int argc, char * const argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
Printer<int>::print(10);
Printer<double>::print(10.5);
return 0;
}
The debugger will stop in the template just fine. In my case, the
template code is in _another_ project that is referenced by the
current project, and the template code is in a .h file. Don't know
if this makes a difference or not. I am still too new to C++/Xcode
to know. I did double check that Optimization is OFF in all the
projects, although I will double check that.
Mike Jackson
On Aug 4, 2005, at 10:28 AM, Andreas Grosam wrote:
On 04.08.2005, at 15:38, Wade Girard wrote:
First this to do is to verify that you are generating debug
symbols, the second is to verify that optimizing is OFF. Note
that setting it to none -o0 is not off.
according the doc, -O0 optimization is indeed off and is the
default. But -O isn't off, did you mean this?
My experience is, that there are (still) a lot of troubles with
the debugger especially with templates - not only regarding
synchronizing with the source.
What may confuse source synchronizing (even with -O0):
Long comments at arbitrary positions in the file
Macros, multi line
templates
static inline functions
breakpoints in member initializer lists
Although it is better than it was in XCode 1.5, this *may* happen
frquently - not always and it is not always reproducible. I have
no workaround for this problem.
If it happens, i try several other things to solve my original
problem - typically loosing a lot of time and getting
disappointed and annoyed.
When having templates, I also recommend to close the assembly
window, since there might occure more troubles: if this happens,
the debugger just refuses to work at all. Furthermore, it is a
bit faster, so one step only takes 2 seconds instead of 3.
Andreas
The only way that I know of to do this is to use a xcconfig file
and have/add the following two lines
GCC_DEBUGGING_SYMBOLS = full
GCC_OPTIMIZATION_LEVEL =
On Aug 4, 2005, at 7:47 AM, Mike Jackson wrote:
I'll try again.
The debugger is ignoring breakpoints set inside a template
function. How do I get the debugger to actually stop at those
breakpoints?
Stats: Xcode 2.1. OS X 10.4.2. PB 1.67/1.5GB RAM
Thanks for any Help
---
Mike Jackson
mike _at_ bluequartz dot net
This email sent to email@hidden
This email sent to email@hidden
---
Mike Jackson
mike _at_ bluequartz dot net
_______________________________________________
---
Mike Jackson
mike _at_ bluequartz dot net
---
Mike Jackson
mike _at_ bluequartz dot net
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden