From: Endlisnis Newsgroups: comp.os.msdos.djgpp Subject: RHIDE Can't debug this. Was: Am I retarded -or- Why is my exe size so big?!? Date: Tue, 01 Sep 1998 18:15:21 -0300 Organization: NBTel Internet Lines: 307 Message-ID: <35EC63E9.4FD54CF0@unb.ca> References: NNTP-Posting-Host: fctnts13c33.nbnet.nb.ca Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------716EB8E7F4423D1EA1ECEB93" CC: djgpp AT delorie DOT com To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk 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--