Mail Archives: djgpp/1998/09/01/20:18:17
This is a multi-part message in MIME format.
--------------716EB8E7F4423D1EA1ECEB93
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Eli Zaretskii wrote:
> Wait a minute. You cannot debug it even under -O0? If so, then this
> has nothing to do with debugging optimized code. Can you post a code
> fragment that escapes debugging and explain how exactly does it
> prevent you from debugging it?
That is correct, even with -O0, it will skip break-points. The problem is
that it only seems to happen on large (600+ lines of code) files. I can't get
any simple examples to screw up. But, I was able to sort-of do something. I
removed as much code as I could, and commented out the rest (removing the
comments made the problem go away). I have binarily attached it to this
message, because re-formatting the text file seems to get rid of this
phenomenon. You can step through the code, but setting a break-point (by
pressing F4) on line #132 (or #133) in the main file will cause the entire
program to be executed, not stopping where I desired. It includes another
file, which I have provided. I have experienced this multiple times, but
always in large files. Just save the 2 files in the same directory, and load
'fade9T.cc' and press F4 on line 132, and you watch it skip that point. All
the program does is print out 2 strings and 1 integer using cout. It doesn't
seem to matter if it is compiled in a project or not, and optimization level
doesn't seem to matter.
--
(\/) Endlisnis (\/)
s257m AT unb DOT ca
Endlisnis AT GeoCities DOT com
Endlis AT nbnet DOT nb DOT ca
--------------716EB8E7F4423D1EA1ECEB93
Content-Type: application/x-unknown-content-type-cc_auto_file; name="fade9T.cc"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="fade9T.cc"
Ly8gUHJvZ3JhbW1lZCBieSwgYW5kIGNvcHlyaWdodCBvZiwgUm9sZiBDYW1wYmVsbCAoMTk5
NS0xOTk4KS4NCi8vIENvbG9yIHF1YW50aXplciB2ZXJzaW9uIDkuNA0KDQojaW5jbHVkZTxp
b3N0cmVhbS5oPg0KLy8jaW5jbHVkZTx0aW1lLmg+DQoNCiNpbmNsdWRlInN2Z2EuaCINCi8v
I2luY2x1ZGUicGN4LmgiDQovLyNkZWZpbmUgREVCVUcNCi8vI2RlZmluZSBERUJVRzINCg0K
Ly8jZGVmaW5lIFNIQVJFV0FSRQ0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vVHlwZURl
ZidzLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy90eXBlZGVmIHVuc2lnbmVkIGNoYXIg
Ynl0ZTsNCi8vdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgd29yZDsNCi8vdHlwZWRlZiB1
bnNpZ25lZCBpbnQgbHdvcmQ7DQoNCi8vc3RydWN0IE5vZGUNCi8vew0KLy8gYnl0ZSBDb2xv
cjsNCi8vIE5vZGUqIFByZXY7DQovLyBOb2RlKiBOZXh0Ow0KLy8gfTsNCg0KLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vL0dsb2JhbCBEYXRhLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8v
Ynl0ZSogQnVmZjsgIC8vQmlnIGFycmF5IHRvIGtlZXAgaW1hZ2UgaW4uDQoNCi8vZmxvYXQq
IFRhYmxlOyAvL0Vycm9yIHRhYmxlDQovL2Zsb2F0KiBUcmlBcnJheVsyNTZdOw0KDQovL2Zs
b2F0IE9IaXN0WzI1Nl0sIFBhbEVycm9yWzI1Nl07DQovL2Zsb2F0IEhpc3RvZ3JhbVsyNTZd
OyAvL0hpc3RvZ3JhbSBhcnJheS4NCg0KLypieXRlIFJlbWFwWzI1Nl0gPSB7MCwxLDIsMyw0
LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwNCjIyLDIz
LDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQx
LDQyLDQzLDQ0LDQ1LDQ2LA0KNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgs
NTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsDQo3Miw3Myw3NCw3NSw3
Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5
NCw5NSw5NiwNCjk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4
LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwNCjExNiwxMTcsMTE4LDExOSwxMjAsMTIx
LDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3LDEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwN
CjEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0Nywx
NDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywNCjE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwx
NjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwNCjE3Mywx
NzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3
LDE4OCwxODksMTkwLDE5MSwNCjE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAw
LDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwNCjIxMSwyMTIsMjEz
LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwy
MjcsMjI4LDIyOSwNCjIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwy
NDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwNCjI0OSwyNTAsMjUxLDI1Miwy
NTMsMjU0LDI1NX07ICovIC8vIENvbG9yIHJlbWFwcGluZyBhcnJheS4NCg0KLy9Ob2RlKiBM
aXN0OyAgICAgLy9MaW5rZWQgbGlzdC4NCg0KLy9pbnQgSW1hZ2VXaWRlLCBJbWFnZUhpZ2g7
ICAvL1dpZHRoIGFuZCBIZWlnaHQgb2YgaW1hZ2UuDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy9GdW5jdGlvbiBkZWNsYXJhdGlvbnMvLy8vLy8vLy8vLy8vLy8NCi8vZXh0ZXJuICJD
Ig0KLy97IC8vSSBkaWRuJ3QgZmVlbCBsaWtlIGluY2x1ZGluZyA8bWF0aC5oPiAmIDxzdGRs
aWIuaD4NCi8vIGRvdWJsZSBzcXJ0KGRvdWJsZSk7ICAvLyBleHRlcm5hbCBzcXVhcmUgcm9v
dCBmdW5jdGlvbi4NCi8vIGRvdWJsZSBsb2coZG91YmxlKTsNCi8vIGludCBhdG9pKGNvbnN0
IGJ5dGUgKik7ICAvLyBjb252ZXJ0cyBzdHJpbmcgdG8gaW50ZXJnZXIuDQovLyB9DQoNCi8v
ZmxvYXQgVGltZURpZmYoKTsNCg0KLy90ZW1wbGF0ZSA8Y2xhc3MgVGVtcGxhdGU+DQovL3Zv
aWQgU3dhcChUZW1wbGF0ZSAmeCxUZW1wbGF0ZSAmeSkNCi8vew0KLy8gVGVtcGxhdGUgdD14
Ow0KLy8geD15Ow0KLy8geT10Ow0KLy8gfQ0KDQovL3ZvaWQgUmVtb3ZlKE5vZGUqKTsgIC8v
UmVtb3ZlcyBvbmUgZWxlbWVudCBvZiB0aGUgbGlua2VkIGxpc3QuDQoNCi8vaW5saW5lIGZs
b2F0IG9wZXJhdG9yIC8gKFBQIE9uZSwgUFAgVHdvKTsNCiAgLy9GaW5kZXMgdGhlIHdlaWdo
dGVkIGNvbG9yLXNwYWNlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBhbGV0dGUgZW50cmllcy4N
Cg0KLy9pbmxpbmUgUFAgTWlkKFBQIE9uZSwgZmxvYXQgVzEsIFBQIFR3bywgZmxvYXQgVzIp
Ow0KICAvL0ZpbmRzIHRoZSB3ZWlnaHRlZCBtaWQtcG9pbnQgYmV0d2VlbiB0aGUgY29sb3Jz
Lg0KDQovL2Zsb2F0IENhbGNFcnJvcihQYWxldHRlIE9uZSwgdW5zaWduZWQgeCwgdW5zaWdu
ZWQgeSk7DQoNCi8vdm9pZCBJbml0TGlzdCgpOyAvL0luaXRpYWxpemVzIHRoZSBsaW5rZWQg
bGlzdC4NCg0KLy92b2lkIFByaW50KE5vZGUqIExpc3QpOyAgLy9Gb3IgZGVidWdnaW5nIG9m
IHRoZSBsaXN0Lg0KDQovL3ZvaWQgU2hhcmVXYXJlKCk7DQoNCi8vaW50IEVycm9yRXhpc3Rz
KGludCBOdW1PZkFyZ3MpOw0KDQovL1BQIFNhZmVBdmVyYWdlQXJvdW5kKGludCBYLCBpbnQg
WSwgUGFsZXR0ZSBPbmUpOw0KLy9QUCBBdmVyYWdlQXJvdW5kKGludCBYLCBpbnQgWSwgUGFs
ZXR0ZSBPbmUpOw0KDQovL3ZvaWQgQnVpbGRIaXN0b2dyYW0oUGFsZXR0ZSk7DQovL3ZvaWQg
QnVpbGRUcmlhbmdsZUFycmF5KCk7DQoNCm1haW4oaW50IE51bUFyZ3MsIGNoYXIgKipBcmdz
KQ0Kew0KIC8vaWYoRXJyb3JFeGlzdHMoTnVtQXJncykpIHJldHVybiAxOw0KIC8vSW5pdExp
c3QoKTsNCg0KIC8vTG9hZCBpbWFnZSBhbmQgcGFsZXR0ZS4NCiAvKlBhbGV0dGUgT25lLFR3
bzsNCiBQY3ggSW1hZ2U7DQogSW1hZ2UuUHJldmlldyhBcmdzWzFdKTsNCiBpZihJbWFnZS5H
b29kKCkpDQogIGNvdXQgPDwgIkZpbGUgXCIiIDw8IEFyZ3NbMV0gPDwgIlwiIG9wZW5lZC5c
biI7DQogZWxzZQ0KIHsNCiAgY291dCA8PCAiQ291bGQgbm90IG9wZW4gXCIiIDw8IEFyZ3Nb
MV0gPDwgIlwiXG4iOw0KICByZXR1cm4gMTsNCiAgfQ0KIEJ1ZmYgPSBTY3JlZW4oSW1hZ2Uu
SGVhZGVyLlhNYXgrMSxJbWFnZS5IZWFkZXIuWU1heCsxKTsNCiAgVGltZURpZmYoKTsNCiAg
Y291dCA8PCAiTG9hZGluZyBpbWFnZS4uLiI7DQogSW1hZ2UuU2V0UmVhZFdyaXRlQnVmZihC
dWZmKTsNCiBJbWFnZS5SZWFkKEFyZ3NbMV0pOw0KICBjb3V0IDw8ICJkb25lLiAgKCIgPDwg
VGltZURpZmYoKSA8PCAiIHMpLlxuIjsNCiBJbWFnZUhpZ2ggPSBJbWFnZS5IZWFkZXIuWU1h
eDsNCiBJbWFnZVdpZGUgPSBJbWFnZS5IZWFkZXIuWE1heDsNCiAgY291dCA8PCAiSW1hZ2Ug
aXMgIiA8PCAoSW1hZ2VXaWRlKzEpIDw8ICd4JyA8PCAoSW1hZ2VIaWdoKzEpIDw8ICIuXG4i
Ow0KIENvcHlQYWwoSW1hZ2UuUGFsLCBUd28pOw0KIENvcHlQYWwoVHdvLE9uZSk7DQogLy9J
bWFnZSBhbmQgcGFsZXR0ZSBsb2FkZWQuDQoNCiAvL0J1aWxkSGlzdG9ncmFtKE9uZSk7DQoN
Cg0KIGNvdXQgPDwgIkJ1aWxkaW5nIHRhYmxlLi4uIjsgIFRpbWVEaWZmKCk7Ki8NCiAvKmZv
ciAodW5zaWduZWQgeT0wOyB5PDI1NjsgeSsrKQ0KICBmb3IgKHVuc2lnbmVkIHg9eSsxOyB4
PDI1NjsgeCsrKQ0KICAgVHJpQXJyYXlbeV1beF09Q2FsY0Vycm9yKFR3bywgeCx5KTsqLw0K
IGNvdXQgPDwgImRvbmUuICAoIiAvLzw8IFRpbWVEaWZmKCkNCiAgICAgIDw8ICIgcykuXG5P
cHRpbWl6aW5nIHBhbGV0dGUuLi4iOw0KIGNvdXQgPDwgNDsNCiB9DQo=
--------------716EB8E7F4423D1EA1ECEB93
Content-Type: text/plain; charset=us-ascii; name="svga.h"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="svga.h"
// SVGA.H v2
#ifndef SVGA_H
#define SVGA_H
typedef unsigned char byte;
typedef unsigned short int word;
typedef unsigned int lword;
extern "C"
{
double log(double); //External log function
double sqrt(double); //External square-root function
void *memset(void *buffer, int ch, unsigned long int num);
}
word ScreenWide, ScreenHigh;
//Function prototypes
int Sn(int th)
{
if (th>0) return 1;
if (th<0) return -1;
return 0;
}
void Pset(int x, int y, byte Clr, byte *To)
{
To[ScreenWide * y + x] = Clr;
}
inline byte Point(int x, int y, byte *To)
{
return To[ScreenWide * y + x];
}
class LongPal;
class PP
{
public:
byte Red,Green,Blue;
PP operator = (LongPal);
PP(LongPal);
PP() {}
};
typedef class PP Palette[256];
inline PP operator % (PP One, PP Two)
{
PP Return;
Return.Red = ((int)One.Red + (int)Two.Red + 1)>>1;
Return.Green = ((int)One.Green + (int)Two.Green + 1)>>1;
Return.Blue = ((int)One.Blue + (int)Two.Blue + 1)>>1;
return Return;
}
class LongPal
{
public:
float Red, Green, Blue;
LongPal operator = (PP);
LongPal operator = (int);
LongPal(PP);
LongPal() {}
};
LongPal LongPal::operator = (int Grey)
{
Red = Green = Blue = Grey;
return *this;
}
LongPal::LongPal(PP One)
{
*this = One;
}
PP::PP(LongPal One)
{
*this = One;
}
PP PP::operator = (LongPal RValue)
{
if (RValue.Red>255) RValue.Red=255;
if (RValue.Red<0) RValue.Red=0;
if (RValue.Green>255) RValue.Green=255;
if (RValue.Green<0) RValue.Green=0;
if (RValue.Blue>255) RValue.Blue=255;
if (RValue.Blue<0) RValue.Blue=0;
Red = (byte)(RValue.Red+.5);
Green = (byte)(RValue.Green+.5);
Blue = (byte)(RValue.Blue+.5);
return *this;
}
LongPal LongPal::operator = (PP RValue)
{
Red = RValue.Red;
Green = RValue.Green;
Blue = RValue.Blue;
return *this;
}
LongPal operator / (LongPal One, float Two)
{
LongPal Return;
Return.Red = One.Red / Two;
Return.Green = One.Green / Two;
Return.Blue = One.Blue / Two;
return Return;
}
LongPal operator / (PP One, float Two)
{
LongPal R;
R.Red = One.Red / Two;
R.Green = One.Green / Two;
R.Blue = One.Blue / Two;
return R;
}
LongPal operator * (PP One, double Two)
{
LongPal R;
R.Red = One.Red * Two;
R.Green = One.Green * Two;
R.Blue = One.Blue * Two;
return R;
}
LongPal operator * (LongPal One, double Two)
{
LongPal R;
R.Red = One.Red * Two;
R.Green = One.Green * Two;
R.Blue = One.Blue * Two;
return R;
}
LongPal operator + (PP One, PP Two)
{
LongPal Return;
Return.Red = (int)One.Red + (int)Two.Red;
Return.Green = (int)One.Green + (int)Two.Green;
Return.Blue = (int)One.Blue + (int)Two.Blue;
return Return;
}
inline LongPal operator += (LongPal One, PP Two)
{
One.Red += Two.Red;
One.Green += Two.Green;
One.Blue += Two.Blue;
return One;
}
inline LongPal operator /= (LongPal One, float Two)
{
return (One = One / Two);
}
void SetPalZero(Palette TemPal)
{
memset((void*)TemPal,0,256*3);
}
void CopyPal(Palette PalOne, Palette PalTwo)
{
memcpy(PalTwo, PalOne, 256*3);
}
byte* Screen(word Wide, word High)
{
ScreenWide = Wide;
ScreenHigh = High;
return new byte[Wide*High];
}
#endif
--------------716EB8E7F4423D1EA1ECEB93--
- Raw text -