Only in ../ddd-3.3.1.dbg/ddd/: .filetype.h.swp diff -u -r -d ./ddd/AppData.h ../ddd-3.3.1.dbg/ddd/AppData.h --- ./ddd/AppData.h Wed Jan 17 16:44:56 2001 +++ ../ddd-3.3.1.dbg/ddd/AppData.h Sat Jun 9 21:16:51 2001 @@ -125,6 +125,7 @@ #define XtNjdbDisplayShortcuts "jdbDisplayShortcuts" #define XtNpydbDisplayShortcuts "pydbDisplayShortcuts" #define XtNperlDisplayShortcuts "perlDisplayShortcuts" +#define XtNdbgDisplayShortcuts "dbgDisplayShortcuts" #define XtCDisplayShortcuts "DisplayShortcuts" #define XtNconsoleButtons "consoleButtons" #define XtNsourceButtons "sourceButtons" @@ -469,6 +470,7 @@ String jdb_display_shortcuts; String pydb_display_shortcuts; String perl_display_shortcuts; + String dbg_display_shortcuts; String console_buttons; String source_buttons; String data_buttons; diff -u -r -d ./ddd/BreakPoint.C ../ddd-3.3.1.dbg/ddd/BreakPoint.C --- ./ddd/BreakPoint.C Wed Jan 17 14:37:30 2001 +++ ../ddd-3.3.1.dbg/ddd/BreakPoint.C Sun Oct 21 15:48:32 2001 @@ -129,6 +129,10 @@ case PERL: process_perl(info_output); break; + + case DBG: + process_dbg(info_output); + break; } // If we found a file name, propagate it to next breakpoint @@ -320,6 +324,12 @@ process_gdb(info_output); } +void BreakPoint::process_dbg(string& info_output) +{ + // DBG has the same output format as GDB. + process_gdb(info_output); +} + void BreakPoint::process_dbx(string& info_output) { if (info_output.contains("PC==", 0) || @@ -885,6 +895,7 @@ case LANGUAGE_C: case LANGUAGE_PERL: case LANGUAGE_JAVA: + case LANGUAGE_PHP: case LANGUAGE_OTHER: return " && "; @@ -975,6 +986,7 @@ { case GDB: case PYDB: + case DBG: { switch (type()) { diff -u -r -d ./ddd/BreakPoint.h ../ddd-3.3.1.dbg/ddd/BreakPoint.h --- ./ddd/BreakPoint.h Mon Jan 3 15:12:09 2000 +++ ../ddd-3.3.1.dbg/ddd/BreakPoint.h Sun Oct 21 15:46:50 2001 @@ -130,6 +130,7 @@ void process_jdb(string& info_output); void process_pydb(string& info_output); void process_perl(string& info_output); + void process_dbg(string& info_output); public: // Create new breakpoint from INFO_OUTPUT. ARG denotes the diff -u -r -d ./ddd/Ddd ../ddd-3.3.1.dbg/ddd/Ddd --- ./ddd/Ddd Sat Jun 30 01:48:53 2001 +++ ../ddd-3.3.1.dbg/ddd/Ddd Sun Oct 28 13:26:12 2001 @@ -4752,6 +4752,7 @@ Ddd*debuggerMenu*jdb.labelString: JDB Ddd*debuggerMenu*pydb.labelString: PYDB Ddd*debuggerMenu*perl.labelString: Perl +Ddd*debuggerMenu*dbg.labelString: DBG Ddd*debuggerMenu.numColumns: 1 Ddd*preferences*startupWindows.labelString: Startup Windows diff -u -r -d ./ddd/Ddd.ad.h ../ddd-3.3.1.dbg/ddd/Ddd.ad.h --- ./ddd/Ddd.ad.h Sat Jun 30 01:49:19 2001 +++ ../ddd-3.3.1.dbg/ddd/Ddd.ad.h Sun Oct 28 13:26:21 2001 @@ -3309,6 +3309,7 @@ "Ddd*debuggerMenu*jdb.labelString: JDB", "Ddd*debuggerMenu*pydb.labelString: PYDB", "Ddd*debuggerMenu*perl.labelString: Perl", +"Ddd*debuggerMenu*dbg.labelString: DBG", "Ddd*debuggerMenu.numColumns: 1", "Ddd*preferences*startupWindows.labelString: Startup Windows", "Ddd*preferences*splashScreen.labelString: DDD Splash Screen", Only in ../ddd-3.3.1.dbg/ddd/: Ddd.ad.h.sav diff -u -r -d ./ddd/Ddd.in ../ddd-3.3.1.dbg/ddd/Ddd.in --- ./ddd/Ddd.in Sat Jun 30 01:47:52 2001 +++ ../ddd-3.3.1.dbg/ddd/Ddd.in Sat Jun 9 20:13:21 2001 @@ -4752,6 +4752,7 @@ @Ddd@*debuggerMenu*jdb.labelString: JDB @Ddd@*debuggerMenu*pydb.labelString: PYDB @Ddd@*debuggerMenu*perl.labelString: Perl +@Ddd@*debuggerMenu*dbg.labelString: DBG @Ddd@*debuggerMenu.numColumns: 1 @Ddd@*preferences*startupWindows.labelString: Startup Windows diff -u -r -d ./ddd/Ddd.in.m4 ../ddd-3.3.1.dbg/ddd/Ddd.in.m4 --- ./ddd/Ddd.in.m4 Mon Apr 30 11:55:19 2001 +++ ../ddd-3.3.1.dbg/ddd/Ddd.in.m4 Sat Jun 9 20:13:19 2001 @@ -643,7 +643,7 @@ O ornaments=""\n\ $DB::emacs = 1\n\ O compactDump=\n\ -O veryCompact=\n\ +O veryCompact=\n ! The Perl Debugger settings. Usually overridden in `~/.ddd/init'. Ddd*perlSettings: @@ -3603,6 +3603,7 @@ Ddd*debuggerMenu*jdb.labelString: JDB Ddd*debuggerMenu*pydb.labelString: PYDB Ddd*debuggerMenu*perl.labelString: Perl +Ddd*debuggerMenu*dbg.labelString: DBG Ddd*debuggerMenu.numColumns: 1 Ddd*preferences*startupWindows.labelString: Startup Windows diff -u -r -d ./ddd/DispValue.C ../ddd-3.3.1.dbg/ddd/DispValue.C --- ./ddd/DispValue.C Thu Apr 26 23:43:31 2001 +++ ../ddd-3.3.1.dbg/ddd/DispValue.C Sun Oct 21 02:29:19 2001 @@ -545,6 +545,12 @@ member_prefix = normalize_base(member_prefix) + "{'"; member_suffix = "'}"; } + else if (gdb->program_language() == LANGUAGE_PHP) + { + // In PHP, members of $A are accessed as $A['MEMBER_NAME'] + member_prefix = normalize_base(member_prefix) + "['"; + member_suffix = "']"; + } else if (gdb->program_language() == LANGUAGE_FORTRAN) { // In Fortran, members of A are accessed as A%B diff -u -r -d ./ddd/GDBAgent.C ../ddd-3.3.1.dbg/ddd/GDBAgent.C --- ./ddd/GDBAgent.C Mon Apr 30 11:54:34 2001 +++ ../ddd-3.3.1.dbg/ddd/GDBAgent.C Sun Oct 21 02:29:40 2001 @@ -174,6 +174,7 @@ DEFINE_TYPE_INFO_1(GDBAgent, TTYAgent); +#define DBG_PROMPT "dbg>" //----------------------------------------------------------------------------- // Construction and setup @@ -188,27 +189,27 @@ state(BusyOnInitialCmds), _type(tp), _user_data(0), - _has_frame_command(tp == GDB || tp == XDB), + _has_frame_command(tp == GDB || tp == XDB || tp == DBG), _has_func_command(tp == DBX), _has_run_io_command(false), _has_print_r_option(false), _has_output_command(false), _has_where_h_option(false), - _has_display_command(tp == GDB || tp == DBX || tp == PYDB), - _has_clear_command(tp == GDB || tp == DBX || tp == JDB || tp == PERL), + _has_display_command(tp == GDB || tp == DBX || tp == PYDB || tp == DBG), + _has_clear_command(tp == GDB || tp == DBX || tp == JDB || tp == PERL || tp == DBG), _has_handler_command(false), - _has_pwd_command(tp == GDB || tp == DBX || tp == PYDB || tp == PERL), + _has_pwd_command(tp == GDB || tp == DBX || tp == PYDB || tp == PERL || tp == DBG), _has_setenv_command(tp == DBX), _has_edit_command(tp == DBX), _has_make_command(tp == GDB || tp == DBX || tp == PERL), _has_jump_command(tp == GDB || tp == DBX || tp == XDB), _has_regs_command(tp == GDB), _has_watch_command(0), // see below - _has_named_values(tp == GDB || tp == DBX || tp == JDB), + _has_named_values(tp == GDB || tp == DBX || tp == JDB || tp == DBG), _has_when_command(tp == DBX), _has_when_semicolon(tp == DBX), _wants_delete_comma(false), - _has_err_redirection(tp == GDB || tp == DBX || tp == XDB), + _has_err_redirection(tp == GDB || tp == DBX || tp == XDB || tp == DBG), _has_givenfile_command(false), _has_cont_sig_command(false), _has_examine_command(tp == GDB || tp == DBX), @@ -221,6 +222,7 @@ _program_language((tp == JDB) ? LANGUAGE_JAVA : (tp == PYDB) ? LANGUAGE_PYTHON : (tp == PERL) ? LANGUAGE_PERL : + (tp == DBG) ? LANGUAGE_PHP : LANGUAGE_C), _verbatim(false), _recording(false), @@ -340,7 +342,8 @@ return "WDB"; else return "GDB"; - + case DBG: + return "DBG"; case DBX: if (is_ladebug()) return "Ladebug"; @@ -649,6 +652,19 @@ return false; } + case DBG: + { + unsigned beginning_of_line = answer.index('\n', -1) + 1; + if ( beginning_of_line < answer.length() + && answer.length() > 0 + && answer.matches(DBG_PROMPT,beginning_of_line)) + { + recording(false); + last_prompt = DBG_PROMPT; + return true; + } + return false; + } case XDB: { // Any line equal to `>' is a prompt. @@ -968,6 +984,15 @@ break; } + case DBG: + { + int i = answer.index(DBG_PROMPT, -1); + while (i > 0 && answer[i - 1] == ' ') + i--; + answer = answer.before(i); + break; + } + case JDB: { // Check for prompt at the end of the last line @@ -1637,6 +1662,7 @@ { case GDB: case DBX: + case DBG: if (internal && has_output_command()) cmd = "output"; else @@ -1697,6 +1723,7 @@ case DBX: case JDB: case PYDB: + case DBG: if (has_where_h_option()) cmd = "where -h"; else @@ -1724,6 +1751,7 @@ { case GDB: case PYDB: + case DBG: return "info locals"; case DBX: @@ -1774,6 +1802,7 @@ case GDB: case DBX: case PYDB: + case DBG: if (has_pwd_command()) return "pwd"; else @@ -1819,6 +1848,7 @@ case JDB: case PYDB: + case DBG: return ""; // Not available } @@ -1852,6 +1882,7 @@ case JDB: case PYDB: case PERL: + case DBG: return ""; // Not available } @@ -1882,6 +1913,7 @@ case JDB: case PYDB: case PERL: + case DBG: return ""; // Not available } @@ -1950,6 +1982,7 @@ { case GDB: case DBX: + case DBG: return "kill"; case XDB: @@ -1972,6 +2005,7 @@ { case GDB: case DBX: + case DBG: if (has_frame_command()) return "frame"; else @@ -2000,6 +2034,7 @@ { case GDB: case DBX: + case DBG: return frame_command() + " " + itostring(num); case XDB: @@ -2041,6 +2076,7 @@ case JDB: case PYDB: case PERL: + case DBG: return frame_command(); case DBX: @@ -2069,6 +2105,9 @@ // in actions. return "print DB::OUT " + quote(text, '\"'); + case DBG: + return " "; + case JDB: case PYDB: return ""; // Not available @@ -2098,6 +2137,7 @@ case JDB: return "class " + text; // JDB: as close as we can get + case DBG: case PERL: return ""; // Who knows? } @@ -2115,6 +2155,7 @@ { case GDB: case PYDB: + case DBG: return "enable" + bp; case DBX: @@ -2145,6 +2186,7 @@ switch (type()) { case GDB: + case DBG: case PYDB: return "disable" + bp; @@ -2178,6 +2220,7 @@ case DBX: case GDB: case PYDB: + case DBG: return "delete" + bp; case XDB: @@ -2209,6 +2252,7 @@ case XDB: return "bc " + bp + " " + itostring(count); + case DBG: case JDB: case PERL: return ""; // Not available @@ -2226,6 +2270,7 @@ case PYDB: return "condition " + bp + " " + expr; + case DBG: case DBX: case XDB: case JDB: @@ -2253,6 +2298,7 @@ case PERL: return "system " + quote(cmd, '\''); + case DBG: case JDB: case PYDB: return ""; // Not available @@ -2370,6 +2416,7 @@ else return "file " + quote_file(program); + case DBG: case PYDB: return "file " + program; @@ -2413,6 +2460,7 @@ case XDB: return "p $signal = " + n + "; C"; + case DBG: case JDB: case PYDB: case PERL: @@ -2454,6 +2502,7 @@ else return "run" + args; + case DBG: case JDB: case PYDB: return "run" + args; @@ -2479,6 +2528,7 @@ case GDB: case JDB: case PYDB: + case DBG: return "run"; case DBX: @@ -2719,6 +2769,7 @@ case LANGUAGE_C: case LANGUAGE_PYTHON: case LANGUAGE_OTHER: + case LANGUAGE_PHP: return " = "; case LANGUAGE_JAVA: @@ -2932,6 +2983,7 @@ { "ada", LANGUAGE_ADA }, { "python", LANGUAGE_PYTHON }, { "perl", LANGUAGE_PERL }, + { "php", LANGUAGE_PHP }, { "c", LANGUAGE_C }, { "c++", LANGUAGE_C }, { "auto", LANGUAGE_OTHER } // Keep current language diff -u -r -d ./ddd/GDBAgent.h ../ddd-3.3.1.dbg/ddd/GDBAgent.h --- ./ddd/GDBAgent.h Fri Jan 26 12:24:09 2001 +++ ../ddd-3.3.1.dbg/ddd/GDBAgent.h Sun Oct 21 16:59:04 2001 @@ -57,7 +57,7 @@ // Debugger types //----------------------------------------------------------------------------- -enum DebuggerType { GDB, DBX, XDB, JDB, PYDB, PERL }; +enum DebuggerType { GDB, DBX, XDB, JDB, PYDB, PERL, DBG }; //----------------------------------------------------------------------------- @@ -77,6 +77,7 @@ LANGUAGE_FORTRAN, // FORTRAN, as supported by GDB. LANGUAGE_PYTHON, // Python, as supported by PYDB. LANGUAGE_PERL, // Perl, as supported by Perl. + LANGUAGE_PHP, // Perl, as supported by DBG. LANGUAGE_OTHER // Others }; @@ -431,7 +432,7 @@ // True if debugger can enable breakpoints bool has_enable_command() const { - return type() == GDB || type() == XDB || type() == PYDB || + return type() == GDB || type() == XDB || type() == PYDB || type() == DBG || has_handler_command(); } bool has_disable_command() const @@ -442,21 +443,21 @@ // True if debugger can set ignore counts on breakpoints bool has_ignore_command() const { - return type() == GDB || type() == XDB || type() == PYDB || + return type() == GDB || type() == XDB || type() == PYDB || type() == DBG || has_handler_command(); } // True if debugger can set conditions on breakpoints bool has_condition_command() const { - return type() == GDB || type() == PYDB; + return type() == GDB || type() == PYDB || type() == DBG; } // True if debugger can delete breakpoints by number bool has_delete_command() const { return type() == GDB || type() == XDB || - type() == DBX || type() == PYDB; + type() == DBX || type() == PYDB || type() == DBG; } // True if debugger has volatile breakpoints (i.e. breakpoints may @@ -464,7 +465,8 @@ bool has_volatile_breakpoints() const { return type() == GDB || type() == XDB || - type() == DBX || type() == PYDB || type() == PERL; + type() == DBX || type() == PYDB || type() == PERL || + type() == DBG; } // True if debugger supports I/O redirection @@ -530,21 +532,21 @@ bool has_numbered_breakpoints() { return type() == GDB || type() == DBX || type() == XDB || - type() == PYDB; + type() == PYDB || type() == DBG; } // True if debugger supports temporary breakpoints bool has_temporary_breakpoints() const { return type() == GDB || type() == XDB || type() == PYDB || - has_when_command() || type() == PERL; + has_when_command() || type() == PERL || type() == DBG; } // True if debugger supports breakpoint conditions bool has_breakpoint_conditions() const { return type() == GDB || type() == XDB || - type() == DBX || type() == PYDB || type() == PERL; + type() == DBX || type() == PYDB || type() == PERL || type() == DBG; } // True if debugger supports breakpoint commands @@ -581,7 +583,7 @@ // True if `display X' automatically prints X bool display_prints_values() const { - return type() == GDB || type() == PYDB; + return type() == GDB || type() == PYDB || type() == DBG; } // True if debugger can enable displays @@ -597,7 +599,7 @@ // True if debugger has numbered displays bool has_numbered_displays() { - return type() == GDB || type() == PYDB; + return type() == GDB || type() == PYDB || type() == DBG; } // True if debugger wants displays separated by `,' diff -u -r -d ./ddd/Makefile ../ddd-3.3.1.dbg/ddd/Makefile --- ./ddd/Makefile Sat Jun 30 01:48:42 2001 +++ ../ddd-3.3.1.dbg/ddd/Makefile Sun Oct 28 13:26:02 2001 @@ -316,13 +316,13 @@ # The flags we use to compile C++ files. # Optimizing flags. (-DNDEBUG -O2) -CXXOPT = -DNDEBUG -O2 +CXXOPT = -DNDEBUG -O0 # Debugging flags. (-g) CXXDEBUG = -g # Warnings. (-W -Wall) CXXWARNINGS = -W -Wall # Extras. (-fexternal-templates -felide-constructors) -CXXSTUFF = -trigraphs +CXXSTUFF = -D_DEBUG -trigraphs CXXFLAGS = $(CXXOPT) $(CXXDEBUG) $(CXXWARNINGS) $(CXXSTUFF) bin_PROGRAMS = ddd diff -u -r -d ./ddd/OldMakefile ../ddd-3.3.1.dbg/ddd/OldMakefile --- ./ddd/OldMakefile Sat Jun 30 01:48:44 2001 +++ ../ddd-3.3.1.dbg/ddd/OldMakefile Sun Oct 28 13:26:04 2001 @@ -124,7 +124,7 @@ # The flags we use to compile C++ files. # CXXOPT = -DNDEBUG -O2 -CXXOPT = -DNDEBUG -O2 +CXXOPT = -DNDEBUG -O0 # CXXDEBUG = -g CXXDEBUG = -g # CXXWARNINGS = -W -Wall @@ -132,7 +132,7 @@ CXXFLAGS = $(CXXOPT) $(CXXDEBUG) $(CXXWARNINGS) # Extra C++-specific flags. (-fexternal-templates -felide-constructors) -CXXSTUFF = -trigraphs +CXXSTUFF = -D_DEBUG -trigraphs # Possible extra libraries required for all C++ programs. () CXXLIBS = diff -u -r -d ./ddd/PosBuffer.C ../ddd-3.3.1.dbg/ddd/PosBuffer.C --- ./ddd/PosBuffer.C Tue Jan 16 11:47:55 2001 +++ ../ddd-3.3.1.dbg/ddd/PosBuffer.C Mon Aug 20 00:54:52 2001 @@ -154,7 +154,7 @@ // If GDB prints a "Current function" line, it overrides whatever // came before (e.g. "stopped in"). if (has_prefix(answer, "Current function is ")) - already_read = Null; + already_read= Null; // Check program state if (has_prefix(answer, "Starting program: ")) @@ -197,7 +197,13 @@ signaled = true; } break; - + case DBG: + { + // Check program state + if (has_prefix(answer, "Starting program: ")) + started = true; + } + break; case XDB: case JDB: case PYDB: @@ -311,6 +317,10 @@ case PERL: filter_perl(answer); break; + + case DBG: + filter_dbg(answer); + break; } filter_line(answer); @@ -1137,6 +1147,81 @@ } } +void PosBuffer::filter_dbg(string& answer) +{ + int idx1, idx2; + + if (already_read != PosComplete && !answer.contains('\n')) + { + // Position info is incomplete + answer_buffer = answer; + answer = ""; + already_read = PosPart; + return; + } + + idx1 = 0; + while (idx1 < (int)answer.length()) + { + idx2 = answer.index('\n', idx1); + if (idx2 < 0) idx2 = answer.length(); + string line = answer.at(idx1, idx2 - idx1); + if (line.contains('\n')) + line = line.before('\n'); + strip_trailing_space(line); + + // DBG uses a format like `test.php:4
\n echo $a."hello world."' +#if RUNTIME_REGEX + static regex rxdbgpos("[^ \t]*:[ \t]*[1-9][0-9]*[ \t]*<.*>"); + static regex rxdbgframepos("#[0-9]*[ \t]*<.*>[ \t]*at[ \t]*[^ \t]*:[ \t]*[1-9][0-9]*"); +#endif + if (line.matches(rxdbgpos)) + { + string file = line.before(':'); + line = line.after(':'); + + string line_no = line; + strip_leading_space(line_no); + line_no = line_no.before(' '); + + line = line.after('<'); + func_buffer = line.before('>'); + strip_leading_space(func_buffer); + + pos_buffer = file + ":" + line_no; + + // Delete this line from output + answer.at(idx1, idx2 - idx1 + 1) = ""; + already_read = PosComplete; + break; + + } else if (line.matches(rxdbgframepos)) + { + string addr = line.before(">"); + func_buffer = addr.after('<'); + strip_leading_space(func_buffer); + + string file = line.after(">"); + file = file.after("at"); + strip_leading_space(file); + + string line_no = file.after(':'); + strip_leading_space(line_no); + + file = file.before(':'); + + pos_buffer = file + ":" + line_no; + + // Delete this line from output + answer.at(idx1, idx2 - idx1 + 1) = ""; + already_read = PosComplete; + break; + } + + idx1 = idx2+1; + } +} + void PosBuffer::filter_perl(string& answer) { // Check for regular source info diff -u -r -d ./ddd/PosBuffer.h ../ddd-3.3.1.dbg/ddd/PosBuffer.h --- ./ddd/PosBuffer.h Thu Apr 26 15:08:06 2001 +++ ../ddd-3.3.1.dbg/ddd/PosBuffer.h Thu Aug 16 03:22:49 2001 @@ -65,6 +65,7 @@ void filter_xdb(string& answer); void filter_jdb(string& answer); void filter_pydb(string& answer); + void filter_dbg(string& answer); void filter_perl(string& answer); // Filter all lines from ANSWER beginning with current line. This diff -u -r -d ./ddd/SourceView.C ../ddd-3.3.1.dbg/ddd/SourceView.C --- ./ddd/SourceView.C Thu Apr 26 15:08:06 2001 +++ ../ddd-3.3.1.dbg/ddd/SourceView.C Sun Oct 21 16:51:45 2001 @@ -604,6 +604,7 @@ { case GDB: case PYDB: + case DBG: if (temp) gdb_command("tbreak " + address, w); else @@ -1118,7 +1119,7 @@ // Same, but use "" if we have GDB and all numbers are used string SourceView::all_numbers(const IntArray& nrs) { - if ((gdb->type() == GDB || gdb->type() == PYDB) && all_bps(nrs)) + if ((gdb->type() == GDB || gdb->type() == PYDB || gdb->type() == DBG) && all_bps(nrs)) return ""; // In GDB, no arg means `all' else return numbers(nrs); @@ -3965,6 +3966,7 @@ { case GDB: case PYDB: + case DBG: if (!has_nr(info_output)) { // Skip this line @@ -4161,6 +4163,7 @@ case JDB: case PYDB: case PERL: + case DBG: { PosBuffer pos_buffer; pos_buffer.filter(info_output); @@ -4852,6 +4855,7 @@ case XDB: case PYDB: case PERL: + case DBG: if (app_data.use_source_path) { // These debuggers use full file names. @@ -6768,6 +6772,7 @@ setLabelList(breakpoint_list_w, breakpoint_list, selected, count, (gdb->type() == GDB || + gdb->type() == DBG || gdb->type() == PYDB) && count > 1, false); UpdateBreakpointButtonsCB(breakpoint_list_w, XtPointer(0), XtPointer(0)); @@ -6882,6 +6887,7 @@ switch (gdb->type()) { case GDB: + case DBG: // GDB frame output is caught by our routines. gdb_command(gdb->frame_command(count - cbs->item_position)); break; @@ -7088,6 +7094,7 @@ { case GDB: case PYDB: + case DBG: frame_nr = frame_output.after(0); break; @@ -7170,6 +7177,7 @@ case JDB: case PYDB: case PERL: + case DBG: pos = count - frame; break; diff -u -r -d ./ddd/buttons.C ../ddd-3.3.1.dbg/ddd/buttons.C --- ./ddd/buttons.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/buttons.C Sat Jun 9 21:12:52 2001 @@ -1537,6 +1537,7 @@ case JDB: str = &app_data.jdb_display_shortcuts; break; case PYDB: str = &app_data.pydb_display_shortcuts; break; case PERL: str = &app_data.perl_display_shortcuts; break; + case DBG: str = &app_data.dbg_display_shortcuts; break; } shortcut_w = @@ -1614,6 +1615,7 @@ case JDB: str = &app_data.jdb_display_shortcuts; break; case PYDB: str = &app_data.pydb_display_shortcuts; break; case PERL: str = &app_data.perl_display_shortcuts; break; + case DBG: str = &app_data.dbg_display_shortcuts; break; } *str = (String)XtNewString(expr.chars()); Only in ../ddd-3.3.1.dbg/ddd/: c diff -u -r -d ./ddd/comm-manag.C ../ddd-3.3.1.dbg/ddd/comm-manag.C --- ./ddd/comm-manag.C Mon Mar 26 20:40:05 2001 +++ ../ddd-3.3.1.dbg/ddd/comm-manag.C Sun Oct 28 23:47:50 2001 @@ -739,6 +739,14 @@ cmds += "L"; extra_data->refresh_breakpoints = true; break; + + case DBG: + extra_data->refresh_initial_line = true; + cmds += "pwd"; + extra_data->refresh_pwd = true; + cmds += "info breakpoints"; + extra_data->refresh_breakpoints = true; + break; } while (dummy.size() < cmds.size()) @@ -1231,6 +1239,7 @@ case GDB: case XDB: case PYDB: + case DBG: break; // FIXME } } @@ -1814,6 +1823,27 @@ if (extra_data->refresh_setting) cmds += show_command(cmd, gdb->type()); break; + + case DBG: + if (extra_data->refresh_pwd) + cmds += gdb->pwd_command(); + if (extra_data->refresh_breakpoints) + cmds += "info breakpoints"; + if (extra_data->refresh_where) + cmds += gdb->where_command(); + if (extra_data->refresh_frame) + cmds += gdb->frame_command(); + if (extra_data->refresh_data) + extra_data->n_refresh_data = + data_disp->add_refresh_data_commands(cmds); + if (extra_data->refresh_user) + extra_data->n_refresh_user = + data_disp->add_refresh_user_commands(cmds); + if (extra_data->refresh_disp_info) + cmds += gdb->info_display_command(); + if (extra_data->refresh_setting) + cmds += show_command(cmd, gdb->type()); + break; } while (dummy.size() < cmds.size()) @@ -2859,7 +2889,7 @@ while (extra_data->n_init > 0) { // Handle output of initialization commands - process_init(answers[qu_count++]); + process_init((qu_countn_init--; } @@ -2879,9 +2909,9 @@ string info_line; // Handle `info line' output - string info_line1 = answers[qu_count++]; - string list = answers[qu_count++]; - string info_line2 = answers[qu_count++]; + string info_line1 = (qu_count. \n"; +"@(#)Built 2001-10-28 by root . \n"; const char *config_info = config_sccs_info + 4; const char *config_dummy = "@(#)"; Only in ../ddd-3.3.1.dbg/ddd/: dbg.log diff -u -r -d ./ddd/ddd.C ../ddd-3.3.1.dbg/ddd/ddd.C --- ./ddd/ddd.C Thu Apr 26 18:53:45 2001 +++ ../ddd-3.3.1.dbg/ddd/ddd.C Sun Aug 19 19:27:34 2001 @@ -521,6 +521,11 @@ { (char *)"-perl", (char *)XtNdebugger, XrmoptionNoArg, (char *)"perl" }, +{ (char *)"--dbg", (char *)XtNdebugger, + XrmoptionNoArg, (char *)"dbg" }, +{ (char *)"-dbg", (char *)XtNdebugger, + XrmoptionNoArg, (char *)"dbg" }, + { (char *)"--trace", (char *)XtNtrace, XrmoptionNoArg, ON }, { (char *)"-trace", (char *)XtNtrace, @@ -1482,6 +1487,7 @@ static Widget set_debugger_jdb_w; static Widget set_debugger_pydb_w; static Widget set_debugger_perl_w; +static Widget set_debugger_dbg_w; static MMDesc debugger_menu [] = { { "gdb", MMToggle, { dddSetDebuggerCB, XtPointer(GDB) }, @@ -1496,6 +1502,8 @@ 0, &set_debugger_pydb_w, 0, 0 }, { "perl", MMToggle, { dddSetDebuggerCB, XtPointer(PERL) }, 0, &set_debugger_perl_w, 0, 0 }, + { "dbg", MMToggle, { dddSetDebuggerCB, XtPointer(DBG) }, + 0, &set_debugger_dbg_w, 0, 0 }, MMEnd }; @@ -3481,6 +3489,7 @@ case JDB: display_shortcuts = app_data.jdb_display_shortcuts; break; case PYDB: display_shortcuts = app_data.pydb_display_shortcuts; break; case PERL: display_shortcuts = app_data.perl_display_shortcuts; break; + case DBG: display_shortcuts = app_data.dbg_display_shortcuts; break; } set_shortcut_menu(data_disp, display_shortcuts); } @@ -4153,6 +4162,7 @@ set_toggle(set_debugger_jdb_w, debugger_type == JDB); set_toggle(set_debugger_pydb_w, debugger_type == PYDB); set_toggle(set_debugger_perl_w, debugger_type == PERL); + set_toggle(set_debugger_dbg_w, debugger_type == DBG); set_toggle(auto_debugger_w, app_data.auto_debugger); set_toggle(splash_screen_w, app_data.splash_screen); @@ -4736,6 +4746,7 @@ notify_set_toggle(set_debugger_jdb_w, type_ok && debugger_type == JDB); notify_set_toggle(set_debugger_pydb_w, type_ok && debugger_type == PYDB); notify_set_toggle(set_debugger_perl_w, type_ok && debugger_type == PERL); + notify_set_toggle(set_debugger_dbg_w, type_ok && debugger_type == DBG); notify_set_toggle(auto_debugger_w, !type_ok || initial_app_data.auto_debugger); @@ -5601,6 +5612,7 @@ case LANGUAGE_ADA: os << "Ada"; break; case LANGUAGE_PYTHON: os << "Python"; break; case LANGUAGE_PERL: os << "Perl"; break; + case LANGUAGE_PHP: os << "PHP"; break; case LANGUAGE_CHILL: os << "Chill"; break; case LANGUAGE_FORTRAN: os << "Fortran"; break; case LANGUAGE_OTHER: os << "(unknown)"; break; @@ -7456,7 +7468,8 @@ || arg == "--xdb" || arg == "-xdb" || arg == "--jdb" || arg == "-jdb" || arg == "--pydb" || arg == "-pydb" - || arg == "--perl" || arg == "-perl") + || arg == "--perl" || arg == "-perl" + || arg == "--dbg" || arg == "-dbg") { gdb_name = arg.after('-', -1); gdb_option_pos = i; @@ -7671,10 +7684,16 @@ set_sensitive(print_examine_w, gdb->has_examine_command()); set_sensitive(cache_machine_code_w, gdb->type() == GDB); - set_sensitive(set_refer_base_w, gdb->type() != GDB); - set_sensitive(set_refer_path_w, gdb->type() != GDB); - set_sensitive(refer_sources_w, gdb->type() != GDB); + if (gdb->type() == DBG) { + app_data.use_source_path = true; + set_toggle(set_refer_base_w, false); + set_toggle(set_refer_path_w, true); + }; + set_sensitive(set_refer_base_w, gdb->type() != GDB && gdb->type() != DBG); + set_sensitive(set_refer_path_w, gdb->type() != GDB && gdb->type() != DBG); + set_sensitive(refer_sources_w, gdb->type() != GDB && gdb->type() != DBG); + set_sensitive(edit_watchpoints_w, gdb->has_watch_command()); set_sensitive(command_separate_exec_window_w, gdb->has_redirection()); @@ -7686,7 +7705,7 @@ set_sensitive(source_file_menu[FileItems::OpenCore].widget, have_core); set_sensitive(data_file_menu[FileItems::OpenCore].widget, have_core); - bool have_exec = gdb->has_exec_files() || gdb->type() == PERL; + bool have_exec = gdb->has_exec_files() || gdb->type() == PERL || gdb->type() == DBG; manage_child(command_file_menu[FileItems::OpenFile].widget, have_exec); manage_child(source_file_menu[FileItems::OpenFile].widget, have_exec); manage_child(data_file_menu[FileItems::OpenFile].widget, have_exec); @@ -7735,6 +7754,7 @@ set_sensitive(set_debugger_jdb_w, have_cmd("jdb")); set_sensitive(set_debugger_pydb_w, have_cmd("pydb")); set_sensitive(set_debugger_perl_w, have_cmd("perl")); + set_sensitive(set_debugger_dbg_w, have_cmd("dbg")); bool can_dump = (gdb->type() == JDB); // (gdb->print_command("", true) != gdb->print_command("", false)); diff -u -r -d ./ddd/disp-read.C ../ddd-3.3.1.dbg/ddd/disp-read.C --- ./ddd/disp-read.C Tue Dec 19 15:37:16 2000 +++ ../ddd-3.3.1.dbg/ddd/disp-read.C Sun Oct 21 01:48:10 2001 @@ -75,6 +75,7 @@ case JDB: case PYDB: case PERL: + case DBG: return false; } @@ -393,6 +394,7 @@ { case GDB: case PYDB: + case DBG: { #if RUNTIME_REGEX static regex rxfile_cmd("[ \t]*(file|load)([ \t]+.*)?"); @@ -634,6 +636,7 @@ { case GDB: case PYDB: + case DBG: prx = &rxgdb_begin_of_display; break; @@ -791,6 +794,7 @@ { case GDB: case PYDB: + case DBG: prx = &rxgdb_begin_of_display_info; break; @@ -835,6 +839,7 @@ { case GDB: case PYDB: + case DBG: { int startpos = gdb_answer.index (": "); int i = startpos + 2; @@ -897,6 +902,7 @@ { case GDB: case PYDB: + case DBG: return display_info.after (": "); case DBX: @@ -926,6 +932,7 @@ case XDB: case JDB: case PERL: + case DBG: return false; // FIXME } @@ -945,6 +952,7 @@ { case GDB: case PYDB: + case DBG: { #if RUNTIME_REGEX static regex rxgdb_disp_nr("[1-9][0-9]*"); diff -u -r -d ./ddd/file.C ../ddd-3.3.1.dbg/ddd/file.C --- ./ddd/file.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/file.C Mon Aug 13 23:53:38 2001 @@ -495,6 +495,10 @@ searchLocal(fs, cbs, is_perl_file); break; + case DBG: + searchLocal(fs, cbs, is_php_file); + break; + case GDB: searchLocal(fs, cbs, is_debuggee_file); break; @@ -637,6 +641,7 @@ case JDB: case PYDB: case PERL: + case DBG: break; // FIXME } } @@ -690,6 +695,7 @@ { case GDB: case PYDB: + case DBG: { string ans; diff -u -r -d ./ddd/filetype.C ../ddd-3.3.1.dbg/ddd/filetype.C --- ./ddd/filetype.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/filetype.C Tue Aug 7 03:30:56 2001 @@ -371,6 +371,19 @@ return false; } +// A PHP file is a standard source file which ends in '.php' or `.php4' +bool is_php_file(const string& file_name) +{ + if (!is_source_file(file_name)) + return false; + + if (file_name.contains(".php", -1) || + file_name.contains(".php4", -1)) + return true; + + return false; +} + // True if FILE_NAME is a directory bool is_directory(const string& file_name) { diff -u -r -d ./ddd/filetype.h ../ddd-3.3.1.dbg/ddd/filetype.h --- ./ddd/filetype.h Mon May 29 12:38:40 2000 +++ ../ddd-3.3.1.dbg/ddd/filetype.h Tue Aug 7 03:30:10 2001 @@ -64,6 +64,9 @@ // True if FILE_NAME is a PERL file bool is_perl_file(const string& file_name); +// True if FILE_NAME is a PHP file +bool is_php_file(const string& file_name); + // True if FILE_NAME is a PYTHON file bool is_python_file(const string& file_name); diff -u -r -d ./ddd/gdbinit.C ../ddd-3.3.1.dbg/ddd/gdbinit.C --- ./ddd/gdbinit.C Tue Jan 9 21:00:51 2001 +++ ../ddd-3.3.1.dbg/ddd/gdbinit.C Sun Aug 19 18:34:39 2001 @@ -253,6 +253,7 @@ static bool have_perl = (fallback == PERL || have_cmd("perl")); static bool have_python = (fallback == PYDB || have_cmd("python")); + static bool have_dbg = (fallback == DBG || have_cmd("dbg")); // 1. Check for Perl and Python scripts as given. @@ -275,6 +276,12 @@ type = PYDB; return; } + + if (have_dbg && is_php_file(arg)) + { + type = DBG; + return; + } } @@ -489,7 +496,8 @@ { XDB, "xdb" }, { JDB, "jdb" }, { PYDB, "pydb" }, - { PERL, "perl" } + { PERL, "perl" }, + { DBG, "dbg" } }; // Determine debugger type from DEBUGGER_NAME diff -u -r -d ./ddd/options.C ../ddd-3.3.1.dbg/ddd/options.C --- ./ddd/options.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/options.C Tue Aug 7 01:57:46 2001 @@ -2302,6 +2302,7 @@ case XDB: case PYDB: + case DBG: // FIXME break; } @@ -2710,6 +2711,7 @@ string jdb_display_shortcuts = app_data.jdb_display_shortcuts; string pydb_display_shortcuts = app_data.pydb_display_shortcuts; string perl_display_shortcuts = app_data.perl_display_shortcuts; + string dbg_display_shortcuts = app_data.dbg_display_shortcuts; switch (gdb->type()) { @@ -2719,6 +2721,7 @@ case JDB: jdb_display_shortcuts = expr; break; case PYDB: pydb_display_shortcuts = expr; break; case PERL: perl_display_shortcuts = expr; break; + case DBG: dbg_display_shortcuts = expr; break; } os << string_app_value(XtNgdbDisplayShortcuts, @@ -2733,6 +2736,8 @@ pydb_display_shortcuts, true) << '\n'; os << string_app_value(XtNperlDisplayShortcuts, perl_display_shortcuts, true) << '\n'; + os << string_app_value(XtNdbgDisplayShortcuts, + dbg_display_shortcuts, true) << '\n'; } // Fonts diff -u -r -d ./ddd/regexps.C ../ddd-3.3.1.dbg/ddd/regexps.C --- ./ddd/regexps.C Tue Dec 19 15:39:22 2000 +++ ../ddd-3.3.1.dbg/ddd/regexps.C Mon Aug 20 00:47:07 2001 @@ -248,3 +248,6 @@ const regex rxenter_file_name (rx_matcher, (void *)"C6"); const regex rxdoubleindex (rx_matcher, (void *)"C7"); const regex rxcont_cmd (rx_matcher, (void *)"C8"); + +const regex rxdbgpos (rx_matcher, (void *)"C9"); +const regex rxdbgframepos (rx_matcher, (void *)"CA"); diff -u -r -d ./ddd/regexps.h ../ddd-3.3.1.dbg/ddd/regexps.h --- ./ddd/regexps.h Tue Dec 19 15:39:22 2000 +++ ../ddd-3.3.1.dbg/ddd/regexps.h Mon Aug 20 00:47:56 2001 @@ -166,6 +166,8 @@ extern const regex rxxdb; extern const regex rxxdbpos; extern const regex rxdoubleindex; +extern const regex rxdbgpos; +extern const regex rxdbgframepos; #endif // !RUNTIME_REGEX diff -u -r -d ./ddd/resources.C ../ddd-3.3.1.dbg/ddd/resources.C --- ./ddd/resources.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/resources.C Sat Jun 9 21:14:01 2001 @@ -570,6 +570,16 @@ }, { + (char *)XtNdbgDisplayShortcuts, + (char *)XtCDisplayShortcuts, + XtRString, + sizeof(String), + XtOffsetOf(AppData, dbg_display_shortcuts), + XtRString, + XtPointer("") + }, + + { (char *)XtNconsoleButtons, (char *)XtCButtons, XtRString, Only in ../ddd-3.3.1.dbg/ddd/: rxscan.C diff -u -r -d ./ddd/rxscan.L ../ddd-3.3.1.dbg/ddd/rxscan.L --- ./ddd/rxscan.L Mon Apr 30 11:54:34 2001 +++ ../ddd-3.3.1.dbg/ddd/rxscan.L Mon Aug 20 00:48:02 2001 @@ -360,5 +360,7 @@ C6enter{W}.*file{W}name RETURN(&rxenter_file_name); C7[[]-?{D}]{W}*={W}[[]-?{D}]{C} RETURN(&rxdoubleindex); C8{_}(r|ru|run|rer|rerun|c|cont|contin|continu|continue|R|exec)({W}{C})? RETURN(&rxcont_cmd); +C9[^ \t]*:{_}{P}{_}<.*> RETURN(&rxdbgpos); +CA#{D}{_}<.*>{_}at{_}[^ \t]*:{_}{P} RETURN(&rxdbgframepos); (.|\n) RETURN(0); // Anything else %% diff -u -r -d ./ddd/session.C ../ddd-3.3.1.dbg/ddd/session.C --- ./ddd/session.C Thu Apr 26 15:08:07 2001 +++ ../ddd-3.3.1.dbg/ddd/session.C Sat Jun 9 21:14:23 2001 @@ -976,6 +976,7 @@ case JDB: app_data.jdb_display_shortcuts = display_shortcuts; break; case PYDB: app_data.pydb_display_shortcuts = display_shortcuts; break; case PERL: app_data.perl_display_shortcuts = display_shortcuts; break; + case DBG: app_data.dbg_display_shortcuts = display_shortcuts; break; } update_user_buttons(); diff -u -r -d ./ddd/settings.C ../ddd-3.3.1.dbg/ddd/settings.C --- ./ddd/settings.C Mon Apr 30 11:55:19 2001 +++ ../ddd-3.3.1.dbg/ddd/settings.C Mon Oct 29 01:24:19 2001 @@ -740,7 +740,7 @@ if (!init) set_status(value); - if (gdb->type() == GDB) + if (gdb->type() == GDB || gdb->type() == DBG) { if (value.contains(" is ")) value = value.after(" is ", -1); @@ -1010,6 +1010,10 @@ || base.contains("follow_fork_mode")) return OtherOptionMenuEntry; break; + case DBG: + if (base.contains("mode", 0)) + return OnOffToggleButtonEntry; + break; case XDB: case JDB: @@ -1452,6 +1456,7 @@ { case GDB: case PYDB: + case DBG: show = "show "; if (cmd.contains("set ", 0)) show += cmd.after("set "); @@ -1533,6 +1538,7 @@ { case GDB: case PYDB: + case DBG: { if (!line.contains(" -- ") && (entry_filter != SignalEntry || (!line.contains("SIG", 0) && @@ -1970,6 +1976,7 @@ case JDB: case PYDB: case PERL: + case DBG: return; // FIXME } @@ -2207,6 +2214,7 @@ { case GDB: case PYDB: + case DBG: if (entry_filter == SignalEntry) commands = cached_gdb_question("info handle"); else @@ -3149,6 +3157,7 @@ case XDB: case PYDB: + case DBG: // Add setting os << base << ' ' << value << '\n'; break; diff -u -r -d ./ddd/show.C ../ddd-3.3.1.dbg/ddd/show.C --- ./ddd/show.C Thu Apr 26 18:17:19 2001 +++ ../ddd-3.3.1.dbg/ddd/show.C Sat Jun 9 20:25:02 2001 @@ -110,6 +110,7 @@ " --pydb Invoke PYDB as inferior debugger.", " --perl Invoke Perl as inferior debugger.", " --wdb Invoke WDB as inferior debugger.", + " --dbg Invoke DBG as inferior debugger.", " --debugger CMD Invoke inferior debugger as CMD.", " --host USER@HOST Run inferior debugger on HOST.", " --rhost USER@HOST Like --host, but use a rlogin connection.", diff -u -r -d ./ddd/stamp-h ../ddd-3.3.1.dbg/ddd/stamp-h --- ./ddd/stamp-h Sat Jun 30 01:48:59 2001 +++ ../ddd-3.3.1.dbg/ddd/stamp-h Sun Oct 28 13:26:18 2001 @@ -1 +1 @@ -Sat Jun 30 01:48:59 MSD 2001 +Sun Oct 28 13:26:18 MSK 2001 diff -u -r -d ./ddd/value-read.C ../ddd-3.3.1.dbg/ddd/value-read.C --- ./ddd/value-read.C Wed Jan 17 15:00:07 2001 +++ ../ddd-3.3.1.dbg/ddd/value-read.C Sun Oct 21 02:39:02 2001 @@ -930,7 +930,7 @@ member_name = m; } - if (gdb->type() == PERL) + if (gdb->type() == PERL || gdb->type() == DBG) { if (member_name.contains('\'', 0) && member_name.contains('\'', -1)) { Only in ../ddd-3.3.1.dbg/ddd/: vsl-lex.C