diff --git a/uppsrc/ide/Debuggers/Code.cpp b/uppsrc/ide/Debuggers/Code.cpp index 1815b40c8..aefb19516 100644 --- a/uppsrc/ide/Debuggers/Code.cpp +++ b/uppsrc/ide/Debuggers/Code.cpp @@ -92,6 +92,8 @@ void Pdb::SetThread() void Pdb::SetFrame() { int fi = ~framelist; + frame_up.Enable(fi > 0); + frame_down.Enable(fi < framelist.GetCount() - 1); if(fi >= 0 && fi < frame.GetCount()) { Frame& f = frame[fi]; current_frame = &f; @@ -131,6 +133,15 @@ void Pdb::SetFrame() } } +void Pdb::FrameUpDown(int dir) +{ + int q = framelist.GetIndex() + dir; + if(q >= 0 && q < framelist.GetCount()) { + framelist.SetIndex(q); + SetFrame(); + } +} + bool Pdb::SetBreakpoint(const String& filename, int line, const String& bp) { adr_t a = GetAddress(FilePos(filename, line)); diff --git a/uppsrc/ide/Debuggers/Debuggers.iml b/uppsrc/ide/Debuggers/Debuggers.iml index ca5c5494b..dbaac48e5 100644 --- a/uppsrc/ide/Debuggers/Debuggers.iml +++ b/uppsrc/ide/Debuggers/Debuggers.iml @@ -13,42 +13,47 @@ IMAGE_ID(Run) IMAGE_ID(Stop) IMAGE_ID(ExplorerBack) IMAGE_ID(ExplorerFw) +IMAGE_ID(FrameUp) +IMAGE_ID(FrameDown) IMAGE_BEGIN_DATA -IMAGE_DATA(120,156,237,90,205,110,219,48,12,22,122,25,48,20,216,222,160,2,122,89,115,219,19,56,47,225,215,24,250,6,209,11) -IMAGE_DATA(20,185,236,190,98,71,3,123,134,245,212,39,72,238,61,231,156,59,39,58,150,77,83,162,126,162,52,25,130,178,32,18) -IMAGE_DATA(219,223,71,82,18,73,171,142,111,110,213,173,186,176,192,160,109,46,190,235,186,20,199,93,135,197,98,1,0,157,229,40) -IMAGE_DATA(104,91,145,3,147,116,86,91,171,10,54,27,49,182,254,58,215,253,94,131,49,198,113,102,248,151,151,151,81,17,187,219) -IMAGE_DATA(45,109,76,6,150,203,101,208,62,213,4,214,27,11,198,144,137,165,190,114,231,95,150,175,246,15,86,213,102,114,164,54) -IMAGE_DATA(232,156,36,146,124,246,73,181,219,237,138,39,218,9,114,183,219,109,159,12,5,54,102,73,68,85,72,58,145,255,252,252) -IMAGE_DATA(12,90,235,222,111,137,127,174,133,115,216,170,242,194,244,98,40,44,212,0,191,168,112,61,126,97,33,123,124,117,124,97) -IMAGE_DATA(123,182,10,243,79,138,165,190,240,67,114,198,102,112,57,89,216,201,51,118,18,157,46,50,39,19,113,43,139,183,201,175) -IMAGE_DATA(48,121,97,248,196,227,85,134,29,196,252,180,250,119,97,177,27,192,188,238,63,241,248,231,96,35,230,187,99,92,167,109) -IMAGE_DATA(119,56,223,69,98,48,67,172,142,139,101,208,17,27,120,126,51,204,135,196,199,63,135,71,110,11,243,56,32,193,167,254) -IMAGE_DATA(185,166,252,211,241,227,120,75,199,95,59,255,46,134,154,245,167,118,142,201,191,115,11,110,51,207,220,12,106,182,149,153) -IMAGE_DATA(119,18,152,22,174,77,242,38,60,144,5,151,253,121,120,109,239,82,236,110,15,33,60,226,204,214,208,187,67,208,62,238) -IMAGE_DATA(66,216,14,36,26,127,38,110,196,103,226,202,165,79,166,212,141,122,30,68,104,194,114,240,185,246,115,229,3,255,62,248) -IMAGE_DATA(210,245,26,245,6,183,41,49,249,242,73,253,224,164,225,92,22,239,251,103,5,127,238,21,188,126,59,40,126,199,115,49) -IMAGE_DATA(59,120,158,243,94,31,6,101,118,184,141,32,87,80,193,198,200,125,178,254,158,22,130,62,76,54,134,121,25,199,236,236) -IMAGE_DATA(35,78,18,188,230,112,36,6,248,125,95,206,39,49,204,198,151,197,31,198,113,42,126,77,252,39,152,63,53,198,240,80) -IMAGE_DATA(190,126,116,13,43,242,167,42,127,79,81,63,33,59,42,167,126,233,255,44,124,99,105,136,106,165,154,148,99,73,144,107) -IMAGE_DATA(202,186,92,80,140,50,165,54,48,230,145,195,248,160,226,99,106,56,134,241,189,235,76,188,107,129,248,103,241,201,124,228) -IMAGE_DATA(113,77,242,201,53,221,204,185,218,197,37,197,15,254,53,103,67,83,124,67,176,17,255,162,20,205,95,161,143,90,126,106) -IMAGE_DATA(125,83,215,79,17,223,121,229,189,30,96,232,161,1,248,106,122,213,243,164,242,196,68,26,16,114,37,27,246,68,3,243) -IMAGE_DATA(5,160,11,50,46,128,179,49,37,249,8,128,102,242,203,23,156,29,211,34,155,248,196,119,104,193,73,60,94,113,115,73) -IMAGE_DATA(240,125,255,50,86,178,57,31,63,195,197,252,231,52,230,12,255,81,73,140,255,221,249,137,245,47,178,33,197,243,255,200) -IMAGE_DATA(57,158,102,234,89,99,200,107,6,84,12,107,12,177,102,64,100,92,4,83,208,12,24,183,97,252,100,51,224,126,134,3) -IMAGE_DATA(161,57,137,205,32,147,47,250,159,37,124,188,65,121,227,247,154,128,224,63,86,80,177,130,203,41,136,24,38,167,152,107) -IMAGE_DATA(249,82,209,151,52,131,218,70,120,126,185,238,159,54,188,109,45,74,65,167,246,182,213,209,59,5,176,29,80,160,216,11) -IMAGE_DATA(239,84,89,219,250,4,63,184,173,167,146,155,160,94,147,96,54,83,5,86,235,95,194,230,20,247,169,248,209,245,47,180) -IMAGE_DATA(33,197,115,57,185,238,102,112,58,185,59,242,185,135,30,120,118,138,225,46,184,240,193,134,53,219,77,233,168,239,213,172) -IMAGE_DATA(97,112,30,61,23,178,63,241,15,13,139,242,198,8,3,182,166,115,115,255,33,161,99,240,237,199,185,56,103,171,32,47) -IMAGE_DATA(79,140,56,239,31,194,37,249,107,66,165,208,187,6,215,212,2,53,218,226,30,3,207,29,30,15,137,17,221,10,58,238) -IMAGE_DATA(218,234,155,154,30,138,190,13,231,34,54,60,238,154,248,94,167,109,120,220,245,157,253,254,114,80,252,206,109,40,182,141) -IMAGE_DATA(55,204,47,242,126,53,147,29,26,135,17,248,116,151,130,92,231,155,206,35,100,242,13,25,3,218,202,225,243,248,145,239) -IMAGE_DATA(226,72,197,95,57,127,181,235,23,180,81,144,63,158,13,163,138,243,119,180,161,212,209,245,83,46,23,120,233,33,38,244) -IMAGE_DATA(245,187,44,28,121,33,66,198,181,45,168,205,6,220,15,85,1,252,228,119,192,57,13,224,251,99,124,209,0,95,76,208) -IMAGE_DATA(251,125,10,63,218,119,175,50,154,237,118,228,9,248,32,15,253,225,11,17,185,243,227,120,25,120,127,30,142,145,235,125) -IMAGE_DATA(131,6,14,137,129,137,20,231,77,120,202,147,253,121,120,76,140,244,27,52,7,28,38,210,181,190,65,243,15,45,80,9) -IMAGE_DATA(41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) -IMAGE_END_DATA(1152, 14) +IMAGE_DATA(120,156,237,90,205,110,219,48,12,22,118,25,176,13,216,222,160,6,118,89,115,219,19,184,47,225,215,24,246,6,209,11) +IMAGE_DATA(12,189,236,190,98,71,3,123,134,245,212,39,72,238,59,231,220,187,38,58,150,76,81,162,68,198,105,58,20,99,65,36) +IMAGE_DATA(182,249,145,20,255,172,58,126,245,206,188,51,207,76,110,230,65,42,63,142,99,11,19,174,187,205,102,227,156,27,61,198) +IMAGE_DATA(184,97,96,49,110,161,209,243,224,217,184,221,142,245,109,186,78,249,241,177,115,214,218,128,73,228,239,239,239,35,131,236) +IMAGE_DATA(225,112,227,125,178,238,230,230,166,168,31,115,67,54,91,11,248,32,148,197,182,164,241,231,233,131,255,115,219,213,106,36) +IMAGE_DATA(180,214,105,73,17,113,54,167,162,58,28,14,234,64,7,2,236,126,191,159,138,65,161,35,41,34,204,76,209,177,248,187) +IMAGE_DATA(187,59,215,117,221,100,87,99,159,178,50,134,131,209,55,102,230,131,178,81,11,120,85,227,102,120,101,35,103,120,115,122) +IMAGE_DATA(99,103,186,148,245,199,249,178,190,241,75,116,193,97,240,124,180,241,193,179,62,136,129,55,194,96,130,220,214,203,251,226) +IMAGE_DATA(55,80,188,110,254,132,227,173,64,15,200,124,247,252,123,227,101,119,14,234,122,250,132,227,239,179,142,154,237,145,96,3) +IMAGE_DATA(15,227,241,252,88,241,193,206,190,6,44,180,193,136,116,192,249,221,28,15,14,15,127,65,30,176,131,75,253,112,13,60) +IMAGE_DATA(182,79,185,101,31,175,31,214,171,93,255,218,248,7,31,214,228,31,235,57,165,254,46,77,176,205,188,240,48,88,179,173) +IMAGE_DATA(20,222,73,220,146,184,161,137,91,228,29,74,56,111,47,147,239,252,93,138,220,237,93,73,30,228,236,222,226,187,67,81) +IMAGE_DATA(63,236,66,200,14,164,234,191,80,46,202,11,229,244,52,21,83,235,70,157,58,81,10,152,68,94,170,95,74,255,229,159) +IMAGE_DATA(70,94,155,175,200,175,96,155,82,163,247,175,205,23,10,154,207,137,112,159,223,24,247,235,163,113,15,159,142,12,223,225) +IMAGE_DATA(92,77,15,156,167,184,135,235,153,137,30,170,163,136,101,152,209,17,177,223,188,189,111,27,134,175,23,29,115,92,226,154) +IMAGE_DATA(131,126,144,227,8,174,5,57,228,131,251,249,81,143,71,62,36,235,19,225,231,117,156,11,191,198,255,51,196,207,68,31) +IMAGE_DATA(174,245,249,195,57,92,81,63,171,234,247,28,253,83,210,99,36,253,139,255,103,161,27,75,139,184,51,166,111,25,230,8) +IMAGE_DATA(176,86,55,229,138,100,141,213,234,0,159,35,134,224,157,169,175,169,167,50,4,159,93,39,148,93,43,248,159,248,199,227) +IMAGE_DATA(1,71,185,137,71,215,186,62,197,118,193,47,206,127,151,95,11,58,58,44,223,35,217,138,125,150,84,241,83,218,88,139) +IMAGE_DATA(111,229,183,117,253,28,254,93,150,158,234,1,70,55,15,128,156,237,196,93,90,84,25,217,202,0,2,44,167,195,159,232) +IMAGE_DATA(93,154,0,156,144,152,128,160,99,41,242,40,224,250,197,46,77,56,57,198,77,182,224,145,237,82,194,145,63,89,115,83) +IMAGE_DATA(106,224,115,251,188,44,167,51,93,63,145,171,217,151,12,102,129,253,42,53,214,255,228,248,70,254,85,58,56,127,254,29) +IMAGE_DATA(186,196,211,204,46,25,12,178,97,128,201,146,193,80,27,6,136,98,18,172,98,24,16,108,79,240,205,97,64,237,204,7) +IMAGE_DATA(204,112,98,135,129,16,207,218,79,10,190,62,160,178,245,103,67,128,177,95,107,168,90,195,73,26,162,38,35,105,230,181) +IMAGE_DATA(120,174,233,53,195,96,237,32,188,60,189,236,159,54,178,109,45,144,98,82,103,219,234,234,157,194,145,29,80,161,217,149) +IMAGE_DATA(119,42,209,182,190,129,47,110,235,49,73,11,52,27,18,68,103,171,193,214,218,231,100,37,205,125,46,124,53,255,74,29) +IMAGE_DATA(156,63,207,71,47,123,24,156,143,174,78,124,238,209,205,56,31,98,119,85,76,124,113,96,37,187,169,174,106,123,155,12) +IMAGE_DATA(12,138,195,231,74,250,23,252,113,96,97,92,244,176,160,107,57,151,218,47,17,94,67,174,191,142,133,152,109,139,56,25) +IMAGE_DATA(89,54,238,255,137,82,243,215,132,149,132,239,26,148,91,9,234,59,47,247,181,240,220,225,235,177,48,170,91,193,128,189) +IMAGE_DATA(245,252,199,44,15,69,255,204,231,42,58,50,236,45,178,125,219,214,145,97,111,175,252,247,251,35,195,119,170,195,144,109) +IMAGE_DATA(188,37,118,1,247,163,95,244,96,63,44,131,199,187,20,192,6,219,56,142,78,136,183,104,13,160,75,130,167,254,3,62) +IMAGE_DATA(248,209,242,127,101,252,214,230,175,168,67,81,63,153,14,107,212,245,27,117,24,115,114,255,232,233,25,94,122,168,17,126) +IMAGE_DATA(253,78,36,135,94,136,224,229,134,193,153,221,206,133,31,170,10,242,139,221,89,46,112,65,126,58,134,23,13,224,197,132) +IMAGE_DATA(238,241,177,37,31,245,135,87,25,237,126,31,113,140,124,17,7,246,224,133,8,105,124,2,78,32,159,199,225,20,122,185) +IMAGE_DATA(111,208,184,99,97,64,33,213,113,139,60,198,241,246,50,121,40,140,246,27,52,71,57,40,164,23,253,6,205,91,255,249) +IMAGE_DATA(246,124,37,165,169,234,208,9,226,194,82,116,218,0,1,134,164,8,109,76,73,156,38,198,82,76,85,221,80,24,177,168) +IMAGE_DATA(142,69,203,38,60,234,206,11,182,168,123,154,64,180,200,43,197,7,13,87,226,130,13,238,182,87,106,4,29,157,161,152) +IMAGE_DATA(180,206,77,5,1,1,160,196,44,126,41,10,89,112,163,13,97,242,162,13,69,113,164,54,218,197,151,174,67,222,64,167) +IMAGE_DATA(222,166,52,83,231,244,226,33,244,23,96,127,228,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(1248, 16) diff --git a/uppsrc/ide/Debuggers/Gdb.cpp b/uppsrc/ide/Debuggers/Gdb.cpp index d6a5f09bf..2ddc638b8 100644 --- a/uppsrc/ide/Debuggers/Gdb.cpp +++ b/uppsrc/ide/Debuggers/Gdb.cpp @@ -508,6 +508,17 @@ void Gdb::SwitchFrame() Cmdp("frame " + AsString(i), i, false); } +void Gdb::FrameUpDown(int dir) +{ + if(frame.GetCount() < 2) + LoadFrames(); + int q = frame.GetIndex() + dir; + if(q >= 0 && q < frame.GetCount()) { + frame.SetIndex(q); + SwitchFrame(); + } +} + void Gdb::SwitchThread() { int i = ~threads; @@ -637,7 +648,18 @@ Gdb::Gdb() tab.Add(self.SizePos(), "this"); tab.Add(cpu.SizePos(), "CPU"); pane.Add(threads.LeftPosZ(250, 150).TopPos(2)); - pane.Add(frame.HSizePosZ(404, 0).TopPos(2)); + + + int bcx = min(EditField::GetStdHeight(), DPI(16)); + pane.Add(frame.HSizePos(Zx(404), 2 * bcx).TopPos(2)); + pane.Add(frame_up.RightPos(bcx, bcx).TopPos(2, EditField::GetStdHeight())); + frame_up.SetImage(DbgImg::FrameUp()); + frame_up << [=] { FrameUpDown(-1); }; + pane.Add(frame_down.RightPos(0, bcx).TopPos(2, EditField::GetStdHeight())); + frame_down.SetImage(DbgImg::FrameDown()); + frame_down << [=] { FrameUpDown(1); }; + + split.Horz(pane, tree.SizePos()); split.SetPos(8000); Add(split); diff --git a/uppsrc/ide/Debuggers/Gdb.h b/uppsrc/ide/Debuggers/Gdb.h index 0e736486d..8dcd86fd3 100644 --- a/uppsrc/ide/Debuggers/Gdb.h +++ b/uppsrc/ide/Debuggers/Gdb.h @@ -53,6 +53,7 @@ public: void LoadFrames(); void SwitchFrame(); + void FrameUpDown(int dir); void SwitchThread(); void ClearCtrls(); @@ -106,6 +107,7 @@ protected: EditString watchedit; DropList threads; DropList frame; + Button frame_up, frame_down; TabCtrl tab; ArrayCtrl locals; ArrayCtrl watches; diff --git a/uppsrc/ide/Debuggers/Pdb.cpp b/uppsrc/ide/Debuggers/Pdb.cpp index bdbc451e1..39a0b6cc6 100644 --- a/uppsrc/ide/Debuggers/Pdb.cpp +++ b/uppsrc/ide/Debuggers/Pdb.cpp @@ -46,7 +46,7 @@ Vector GetChildProcessList(DWORD processId) { init = count; } child.Remove(0); - return child; + return child; } void TerminateChildProcesses(DWORD dwProcessId, UINT uExitCode) { @@ -337,7 +337,15 @@ Pdb::Pdb() pane.Add(tab.SizePos()); pane.Add(threadlist.LeftPosZ(380, 60).TopPos(2, EditField::GetStdHeight())); - pane.Add(framelist.HSizePosZ(444, 0).TopPos(2, EditField::GetStdHeight())); + int bcx = min(EditField::GetStdHeight(), DPI(16)); + pane.Add(framelist.HSizePos(Zx(444), 2 * bcx).TopPos(2, EditField::GetStdHeight())); + pane.Add(frame_up.RightPos(bcx, bcx).TopPos(2, EditField::GetStdHeight())); + frame_up.SetImage(DbgImg::FrameUp()); + frame_up << [=] { FrameUpDown(-1); }; + pane.Add(frame_down.RightPos(0, bcx).TopPos(2, EditField::GetStdHeight())); + frame_down.SetImage(DbgImg::FrameDown()); + frame_down << [=] { FrameUpDown(1); }; + split.Horz(pane, tree.SizePos()); split.SetPos(8000); Add(split); diff --git a/uppsrc/ide/Debuggers/Pdb.h b/uppsrc/ide/Debuggers/Pdb.h index 5ad4c548d..45f7b0d98 100644 --- a/uppsrc/ide/Debuggers/Pdb.h +++ b/uppsrc/ide/Debuggers/Pdb.h @@ -211,6 +211,7 @@ struct Pdb : Debugger, ParentCtrl { TabCtrl tab; DropList threadlist; DropList framelist; + Button frame_up, frame_down; Label dlock; ArrayCtrl locals; ArrayCtrl self; @@ -341,6 +342,7 @@ struct Pdb : Debugger, ParentCtrl { void Sync0(Thread& ctx); void Sync(); void SetThread(); + void FrameUpDown(int dir); void SetFrame(); bool Step(bool over); void Trace(bool over);