From b897299213be463d12fd77101d9ed737bb745eca Mon Sep 17 00:00:00 2001 From: Matt_Alexander Date: Sun, 11 Aug 2019 19:46:42 +0100 Subject: [PATCH 1/6] Conditional Breakpoints: UI-support --- gdbgui/src/js/Breakpoints.jsx | 60 +++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/gdbgui/src/js/Breakpoints.jsx b/gdbgui/src/js/Breakpoints.jsx index 98427f2c..d0111d7e 100644 --- a/gdbgui/src/js/Breakpoints.jsx +++ b/gdbgui/src/js/Breakpoints.jsx @@ -5,6 +5,7 @@ import Actions from "./Actions.js"; import Util from "./Util.js"; import FileOps from "./FileOps.jsx"; import { FileLink } from "./Links"; +import constants from "./constants.js"; const BreakpointSourceLineCache = { _cache: {}, @@ -26,6 +27,13 @@ const BreakpointSourceLineCache = { }; class Breakpoint extends React.Component { + constructor(props) { + super(props); + this.state = { + breakpoint_condition : "", + editing_breakpoint_condition : false + }; + } get_source_line(fullname, linenum) { // if we have the source file cached, we can display the line of text const MAX_CHARS_TO_SHOW_FROM_SOURCE = 40; @@ -77,10 +85,21 @@ class Breakpoint extends React.Component { return `${bkpt.times} hits`; } } + on_change_bkpt_cond(e) { + this.setState({ breakpoint_condition : e.target.value, + editing_breakpoint_condition : true }); + } + on_key_up_bktp_cond(number, e) { + if (e.keyCode === constants.ENTER_BUTTON_NUM) { + this.setState({ editing_breakpoint_condition : false }); + Breakpoints.set_breakpoint_condition(e.target.value, number); + } + } render() { let b = this.props.bkpt, checked = b.enabled === "y" ? "checked" : "", - source_line = this.get_source_line(b.fullname_to_display, b.line); + source_line = this.get_source_line(b.fullname_to_display, b.line), + break_cond = b.cond; let info_glyph, function_jsx, bkpt_num_to_delete; if (b.is_child_breakpoint) { @@ -121,6 +140,27 @@ class Breakpoint extends React.Component { ); } else { let func = b.func === undefined ? "(unknown function)" : b.func; + let break_cond_style = { + display: "inline", + width: "110px", + padding: "10px 10px", + height: "25px", + fontSize: "1em" + } + if (!this.state.editing_breakpoint_condition) { + // Render break conditions that have either been submitted via the + // input form or via the (gdb) prompt in grey. To communicate that + // those break conditions have been set up. + break_cond_style["color"] = "#ccc"; + break_cond_style["style"] = "italic"; + } + else { + // The user is currently typing the break condition. Display + // what the users is typing instead of the breakpoint object's + // condition field (as it will be overridden once 'enter' has + // been hit). + break_cond = this.state.breakpoint_condition; + } const times_hit = this.get_num_times_hit(b); function_jsx = ( @@ -128,9 +168,20 @@ class Breakpoint extends React.Component { {info_glyph} {func} - + thread groups: {b["thread-groups"]} + + + {times_hit} @@ -202,6 +253,9 @@ class Breakpoints extends React.Component { GdbApi.run_gdb_command([`-break-enable ${bkpt_num}`, GdbApi.get_break_list_cmd()]); } } + static set_breakpoint_condition(condition, bkpt_num) { + GdbApi.run_gdb_command([`-break-condition ${bkpt_num} ${condition}`, GdbApi.get_break_list_cmd()]); + } static remove_breakpoint_if_present(fullname, line) { if (Breakpoints.has_breakpoint(fullname, line)) { let number = Breakpoints.get_breakpoint_number(fullname, line); @@ -301,4 +355,4 @@ class Breakpoints extends React.Component { } } -export default Breakpoints; +export default Breakpoints; \ No newline at end of file From c43e71f8576accbd2f29ae6709e69153bc8a3ed4 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 14 Aug 2019 22:01:07 -0700 Subject: [PATCH 2/6] run autoformatter --- gdbgui/src/js/BinaryLoader.jsx | 4 ++- gdbgui/src/js/Breakpoints.jsx | 41 +++++++++++++++++-------------- gdbgui/src/js/CopyToClipboard.tsx | 2 +- gdbgui/src/js/FileOps.jsx | 3 ++- gdbgui/src/js/GdbApi.jsx | 11 +++------ gdbgui/src/js/GdbVariable.jsx | 3 +-- gdbgui/src/js/Links.tsx | 16 ++++++------ gdbgui/src/js/MemoryLink.tsx | 4 +-- gdbgui/src/js/Settings.jsx | 4 ++- gdbgui/src/js/TopBar.jsx | 4 +-- gdbgui/src/js/constants.js | 2 +- gdbgui/src/js/types.d.ts | 8 +++--- 12 files changed, 53 insertions(+), 49 deletions(-) diff --git a/gdbgui/src/js/BinaryLoader.jsx b/gdbgui/src/js/BinaryLoader.jsx index 94999868..33c9c59a 100644 --- a/gdbgui/src/js/BinaryLoader.jsx +++ b/gdbgui/src/js/BinaryLoader.jsx @@ -154,7 +154,9 @@ class BinaryLoader extends React.Component { } /> - {this.state.past_binaries.map((b, i) => )} + {this.state.past_binaries.map((b, i) => ( + + ))} ); diff --git a/gdbgui/src/js/Breakpoints.jsx b/gdbgui/src/js/Breakpoints.jsx index d0111d7e..ff0cd0d2 100644 --- a/gdbgui/src/js/Breakpoints.jsx +++ b/gdbgui/src/js/Breakpoints.jsx @@ -30,8 +30,8 @@ class Breakpoint extends React.Component { constructor(props) { super(props); this.state = { - breakpoint_condition : "", - editing_breakpoint_condition : false + breakpoint_condition: "", + editing_breakpoint_condition: false }; } get_source_line(fullname, linenum) { @@ -74,24 +74,27 @@ class Breakpoint extends React.Component { ); } - get_num_times_hit(bkpt){ - if ((bkpt.times === undefined) // E.g. 'bkpt' is a child breakpoint - || - (bkpt.times == 0)) { - return "" + get_num_times_hit(bkpt) { + if ( + bkpt.times === undefined || // E.g. 'bkpt' is a child breakpoint + bkpt.times == 0 + ) { + return ""; } else if (bkpt.times == 1) { - return "1 hit" + return "1 hit"; } else { return `${bkpt.times} hits`; } } on_change_bkpt_cond(e) { - this.setState({ breakpoint_condition : e.target.value, - editing_breakpoint_condition : true }); + this.setState({ + breakpoint_condition: e.target.value, + editing_breakpoint_condition: true + }); } on_key_up_bktp_cond(number, e) { if (e.keyCode === constants.ENTER_BUTTON_NUM) { - this.setState({ editing_breakpoint_condition : false }); + this.setState({ editing_breakpoint_condition: false }); Breakpoints.set_breakpoint_condition(e.target.value, number); } } @@ -146,15 +149,14 @@ class Breakpoint extends React.Component { padding: "10px 10px", height: "25px", fontSize: "1em" - } + }; if (!this.state.editing_breakpoint_condition) { - // Render break conditions that have either been submitted via the + // Render break conditions that have either been submitted via the // input form or via the (gdb) prompt in grey. To communicate that // those break conditions have been set up. break_cond_style["color"] = "#ccc"; break_cond_style["style"] = "italic"; - } - else { + } else { // The user is currently typing the break condition. Display // what the users is typing instead of the breakpoint object's // condition field (as it will be overridden once 'enter' has @@ -182,7 +184,7 @@ class Breakpoint extends React.Component { value={break_cond} /> - + {times_hit} @@ -254,7 +256,10 @@ class Breakpoints extends React.Component { } } static set_breakpoint_condition(condition, bkpt_num) { - GdbApi.run_gdb_command([`-break-condition ${bkpt_num} ${condition}`, GdbApi.get_break_list_cmd()]); + GdbApi.run_gdb_command([ + `-break-condition ${bkpt_num} ${condition}`, + GdbApi.get_break_list_cmd() + ]); } static remove_breakpoint_if_present(fullname, line) { if (Breakpoints.has_breakpoint(fullname, line)) { @@ -355,4 +360,4 @@ class Breakpoints extends React.Component { } } -export default Breakpoints; \ No newline at end of file +export default Breakpoints; diff --git a/gdbgui/src/js/CopyToClipboard.tsx b/gdbgui/src/js/CopyToClipboard.tsx index 890f1010..95a6f3ca 100644 --- a/gdbgui/src/js/CopyToClipboard.tsx +++ b/gdbgui/src/js/CopyToClipboard.tsx @@ -3,7 +3,7 @@ import ToolTip from "./ToolTip.jsx"; import { store } from "statorgfc"; type Props = { - content: string | null + content: string | null; }; class CopyToClipboard extends React.Component { diff --git a/gdbgui/src/js/FileOps.jsx b/gdbgui/src/js/FileOps.jsx index 5e777a3a..2608c068 100644 --- a/gdbgui/src/js/FileOps.jsx +++ b/gdbgui/src/js/FileOps.jsx @@ -429,7 +429,8 @@ const FileOps = {

{`Binary: ${store.get("inferior_binary_path")}, modified ${moment( store.get("inferior_binary_path_last_modified_unix_sec") * 1000 - ).format(constants.DATE_FORMAT)}`}) + ).format(constants.DATE_FORMAT)}`} + )

); diff --git a/gdbgui/src/js/GdbApi.jsx b/gdbgui/src/js/GdbApi.jsx index d7beb01d..f78dad5c 100644 --- a/gdbgui/src/js/GdbApi.jsx +++ b/gdbgui/src/js/GdbApi.jsx @@ -33,13 +33,10 @@ const GdbApi = { const TIMEOUT_MIN = 5; /* global io */ /* global initial_data */ - GdbApi.socket = io.connect( - `/gdb_listener`, - { - timeout: TIMEOUT_MIN * 60 * 1000, - query: `csrf_token=${initial_data.csrf_token}&gdbpid=${initial_data.gdbpid}` - } - ); + GdbApi.socket = io.connect(`/gdb_listener`, { + timeout: TIMEOUT_MIN * 60 * 1000, + query: `csrf_token=${initial_data.csrf_token}&gdbpid=${initial_data.gdbpid}` + }); GdbApi.socket.on("connect", function() { debug_print("connected"); diff --git a/gdbgui/src/js/GdbVariable.jsx b/gdbgui/src/js/GdbVariable.jsx index 0c9096c5..46fd6048 100644 --- a/gdbgui/src/js/GdbVariable.jsx +++ b/gdbgui/src/js/GdbVariable.jsx @@ -352,8 +352,7 @@ class GdbVariable extends React.Component { {_.trim(mi_obj.type) || ""}
- : - {tree} + :{tree} {plot_button} {delete_button}
diff --git a/gdbgui/src/js/Links.tsx b/gdbgui/src/js/Links.tsx index 110bac6f..d8505275 100644 --- a/gdbgui/src/js/Links.tsx +++ b/gdbgui/src/js/Links.tsx @@ -4,10 +4,10 @@ import CopyToClipboard from "./CopyToClipboard"; import MemoryLink from "./MemoryLink"; type Props = { - file?: string - fullname?: string - line: string - num_lines?: number + file?: string; + fullname?: string; + line: string; + num_lines?: number; }; export class FileLink extends React.Component { @@ -52,10 +52,10 @@ export class FileLink extends React.Component { } type FrameLinkProps = { - addr: string - file?: string - fullname?: string - line: string + addr: string; + file?: string; + fullname?: string; + line: string; }; export class FrameLink extends React.Component { diff --git a/gdbgui/src/js/MemoryLink.tsx b/gdbgui/src/js/MemoryLink.tsx index 18fd2bff..bac8e860 100644 --- a/gdbgui/src/js/MemoryLink.tsx +++ b/gdbgui/src/js/MemoryLink.tsx @@ -2,8 +2,8 @@ import * as React from "react"; import Memory from "./Memory.jsx"; type Props = { - addr: string - style?: React.CSSProperties + addr: string; + style?: React.CSSProperties; }; class MemoryLink extends React.Component { diff --git a/gdbgui/src/js/Settings.jsx b/gdbgui/src/js/Settings.jsx index 100e4eee..8bdcbb7b 100644 --- a/gdbgui/src/js/Settings.jsx +++ b/gdbgui/src/js/Settings.jsx @@ -108,7 +108,9 @@ class Settings extends React.Component { localStorage.setItem("theme", e.currentTarget.value); }} > - {store.get("themes").map(t => )} + {store.get("themes").map(t => ( + + ))} diff --git a/gdbgui/src/js/TopBar.jsx b/gdbgui/src/js/TopBar.jsx index 21175742..cba6d54e 100644 --- a/gdbgui/src/js/TopBar.jsx +++ b/gdbgui/src/js/TopBar.jsx @@ -62,9 +62,7 @@ let About = { show_about: function() { Actions.show_modal( "About gdbgui", - - Copyright © Chad Smith, grassfedcode.com - + Copyright © Chad Smith, grassfedcode.com ); } }; diff --git a/gdbgui/src/js/constants.js b/gdbgui/src/js/constants.js index 30e59e6c..281e28af 100644 --- a/gdbgui/src/js/constants.js +++ b/gdbgui/src/js/constants.js @@ -21,7 +21,7 @@ let constants = { BACKTRACE_LINK: "BACKTRACE_LINK", GDBGUI_OUTPUT: "GDBGUI_OUTPUT", GDBGUI_OUTPUT_RAW: "GDBGUI_OUTPUT_RAW", - AUTOCOMPLETE_OPTION: "AUTOCOMPLETE_OPTION", + AUTOCOMPLETE_OPTION: "AUTOCOMPLETE_OPTION" }, source_code_selection_states: { diff --git a/gdbgui/src/js/types.d.ts b/gdbgui/src/js/types.d.ts index e37e4de6..c1425b78 100644 --- a/gdbgui/src/js/types.d.ts +++ b/gdbgui/src/js/types.d.ts @@ -1,5 +1,5 @@ -declare module 'statorgfc' { +declare module "statorgfc" { export let store: { - get(key: string): any - } -} \ No newline at end of file + get(key: string): any; + }; +} From 7c57060f22efc6c850bcba848d5eb21c01938134 Mon Sep 17 00:00:00 2001 From: Matt_Alexander Date: Mon, 19 Aug 2019 21:18:36 +0100 Subject: [PATCH 3/6] Address review comments SourceCode.jsx: Highlight conditional breakpoint in orange. Breakpoints.jsx: Hide the breakpoint condition input form behind a glyph. The glyph, when clicked, turns into a text input field. --- gdbgui/src/js/Breakpoints.jsx | 68 +++++++++++++++++++---------------- gdbgui/src/js/SourceCode.jsx | 17 +++++++-- gdbgui/static/css/gdbgui.css | 3 ++ 3 files changed, 55 insertions(+), 33 deletions(-) diff --git a/gdbgui/src/js/Breakpoints.jsx b/gdbgui/src/js/Breakpoints.jsx index ff0cd0d2..801e7865 100644 --- a/gdbgui/src/js/Breakpoints.jsx +++ b/gdbgui/src/js/Breakpoints.jsx @@ -98,11 +98,15 @@ class Breakpoint extends React.Component { Breakpoints.set_breakpoint_condition(e.target.value, number); } } + on_break_cond_click(e) { + this.setState({ + editing_breakpoint_condition: true + }); + } render() { let b = this.props.bkpt, checked = b.enabled === "y" ? "checked" : "", - source_line = this.get_source_line(b.fullname_to_display, b.line), - break_cond = b.cond; + source_line = this.get_source_line(b.fullname_to_display, b.line); let info_glyph, function_jsx, bkpt_num_to_delete; if (b.is_child_breakpoint) { @@ -143,25 +147,31 @@ class Breakpoint extends React.Component { ); } else { let func = b.func === undefined ? "(unknown function)" : b.func; - let break_cond_style = { - display: "inline", - width: "110px", - padding: "10px 10px", - height: "25px", - fontSize: "1em" - }; - if (!this.state.editing_breakpoint_condition) { - // Render break conditions that have either been submitted via the - // input form or via the (gdb) prompt in grey. To communicate that - // those break conditions have been set up. - break_cond_style["color"] = "#ccc"; - break_cond_style["style"] = "italic"; - } else { - // The user is currently typing the break condition. Display - // what the users is typing instead of the breakpoint object's - // condition field (as it will be overridden once 'enter' has - // been hit). - break_cond = this.state.breakpoint_condition; + let break_condition =( +
+ condition +
+ ); + if (this.state.editing_breakpoint_condition) { + break_condition = ( + + ); } const times_hit = this.get_num_times_hit(b); @@ -174,15 +184,7 @@ class Breakpoint extends React.Component { thread groups: {b["thread-groups"]}
- + {break_condition} {times_hit} @@ -314,6 +316,12 @@ class Breakpoints extends React.Component { .filter(b => b.fullname_to_display === fullname && b.enabled !== "y") .map(b => parseInt(b.line)); } + static get_conditional_breakpoint_lines_for_file(fullname) { + return store + .get("breakpoints") + .filter(b => b.fullname_to_display === fullname && b.cond !== undefined) + .map(b => parseInt(b.line)); + } static save_breakpoints(payload) { store.set("breakpoints", []); if (payload && payload.BreakpointTable && payload.BreakpointTable.body) { diff --git a/gdbgui/src/js/SourceCode.jsx b/gdbgui/src/js/SourceCode.jsx index 4204eb6e..05fdeb00 100644 --- a/gdbgui/src/js/SourceCode.jsx +++ b/gdbgui/src/js/SourceCode.jsx @@ -159,6 +159,7 @@ class SourceCode extends React.Component { line_num_being_rendered, has_bkpt, has_disabled_bkpt, + has_conditional_bkpt, assembly_for_line, paused_addr ) { @@ -188,11 +189,15 @@ class SourceCode extends React.Component { } let gutter_cls = ""; - if (has_bkpt) { - gutter_cls = "breakpoint"; - } else if (has_disabled_bkpt) { + if (has_disabled_bkpt) { gutter_cls = "disabled_breakpoint"; } + else if (has_conditional_bkpt) { + gutter_cls = "conditional_breakpoint"; + } + else if (has_bkpt) { + gutter_cls = "breakpoint"; + } let assembly_content = []; if (assembly_for_line) { @@ -359,6 +364,9 @@ class SourceCode extends React.Component { disabled_breakpoint_lines = Breakpoints.get_disabled_breakpoint_lines_for_file( this.state.fullname_to_render ), + conditional_breakpoint_lines = Breakpoints.get_conditional_breakpoint_lines_for_file( + this.state.fullname_to_render + ), line_gdb_is_paused_on = this.state.paused_on_frame ? parseInt(this.state.paused_on_frame.line) : 0; @@ -380,6 +388,8 @@ class SourceCode extends React.Component { let has_bkpt = bkpt_lines.indexOf(line_num_being_rendered) !== -1, has_disabled_bkpt = disabled_breakpoint_lines.indexOf(line_num_being_rendered) !== -1, + has_conditional_bkpt = + conditional_breakpoint_lines.indexOf(line_num_being_rendered) !== -1, is_gdb_paused_on_this_line = this.is_gdb_paused_on_this_line( line_num_being_rendered, line_gdb_is_paused_on @@ -394,6 +404,7 @@ class SourceCode extends React.Component { line_num_being_rendered, has_bkpt, has_disabled_bkpt, + has_conditional_bkpt, assembly_for_line, paused_addr ) diff --git a/gdbgui/static/css/gdbgui.css b/gdbgui/static/css/gdbgui.css index 0c462fc2..41d5376f 100644 --- a/gdbgui/static/css/gdbgui.css +++ b/gdbgui/static/css/gdbgui.css @@ -170,6 +170,9 @@ div.breakpoint:hover div.breakpoint_trashcan, .line_num.disabled_breakpoint{ background: #ffd6d7 !important; } +.line_num.conditional_breakpoint{ + background: #ff9966 !important; +} td.assembly{ padding-bottom: 0px; padding-top: 0px; From a621f7605dea439c51b6ab7074ff9f9c36235d63 Mon Sep 17 00:00:00 2001 From: Matt_Alexander Date: Mon, 19 Aug 2019 21:31:05 +0100 Subject: [PATCH 4/6] Run prettier --- gdbgui/src/js/Breakpoints.jsx | 28 ++++++++++++++-------------- gdbgui/src/js/SourceCode.jsx | 6 ++---- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/gdbgui/src/js/Breakpoints.jsx b/gdbgui/src/js/Breakpoints.jsx index 801e7865..bddfcf6b 100644 --- a/gdbgui/src/js/Breakpoints.jsx +++ b/gdbgui/src/js/Breakpoints.jsx @@ -147,10 +147,12 @@ class Breakpoint extends React.Component { ); } else { let func = b.func === undefined ? "(unknown function)" : b.func; - let break_condition =( -
+ onClick={this.on_break_cond_click.bind(this)} + > condition
); @@ -158,19 +160,19 @@ class Breakpoint extends React.Component { break_condition = ( + /> ); } @@ -183,9 +185,7 @@ class Breakpoint extends React.Component { thread groups: {b["thread-groups"]} - - {break_condition} - + {break_condition} {times_hit} diff --git a/gdbgui/src/js/SourceCode.jsx b/gdbgui/src/js/SourceCode.jsx index 05fdeb00..74dd5335 100644 --- a/gdbgui/src/js/SourceCode.jsx +++ b/gdbgui/src/js/SourceCode.jsx @@ -191,11 +191,9 @@ class SourceCode extends React.Component { let gutter_cls = ""; if (has_disabled_bkpt) { gutter_cls = "disabled_breakpoint"; - } - else if (has_conditional_bkpt) { + } else if (has_conditional_bkpt) { gutter_cls = "conditional_breakpoint"; - } - else if (has_bkpt) { + } else if (has_bkpt) { gutter_cls = "breakpoint"; } From e2c0730e2d2eda0f5faacfe5f67a0cc7c4726f9a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sun, 15 Sep 2019 16:40:05 -0700 Subject: [PATCH 5/6] various minor improvements --- gdbgui/src/js/Breakpoints.jsx | 27 ++++++++++++++++++++++----- gdbgui/src/js/constants.js | 8 ++++++-- gdbgui/static/css/gdbgui.css | 4 ++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/gdbgui/src/js/Breakpoints.jsx b/gdbgui/src/js/Breakpoints.jsx index bddfcf6b..6b189343 100644 --- a/gdbgui/src/js/Breakpoints.jsx +++ b/gdbgui/src/js/Breakpoints.jsx @@ -149,11 +149,16 @@ class Breakpoint extends React.Component { let func = b.func === undefined ? "(unknown function)" : b.func; let break_condition = (
- condition + + + condition +
); if (this.state.editing_breakpoint_condition) { @@ -182,11 +187,23 @@ class Breakpoint extends React.Component { {info_glyph} {func} - + thread groups: {b["thread-groups"]} {break_condition} - + {times_hit} diff --git a/gdbgui/src/js/constants.js b/gdbgui/src/js/constants.js index 281e28af..e98a2492 100644 --- a/gdbgui/src/js/constants.js +++ b/gdbgui/src/js/constants.js @@ -53,11 +53,15 @@ let constants = { keys_to_not_log_changes_in_console: ["gdb_mi_output", "gdb_console_entries"] }; -constants["IGNORE_ERRORS_TOKEN_INT"] = parseInt(constants.IGNORE_ERRORS_TOKEN_STR); +constants["IGNORE_ERRORS_TOKEN_INT"] = parseInt( + constants.IGNORE_ERRORS_TOKEN_STR +); constants["DISASSEMBLY_FOR_MISSING_FILE_INT"] = parseInt( constants.DISASSEMBLY_FOR_MISSING_FILE_STR ); constants["CREATE_VAR_INT"] = parseInt(constants.CREATE_VAR_STR); -constants["INLINE_DISASSEMBLY_INT"] = parseInt(constants.INLINE_DISASSEMBLY_STR); +constants["INLINE_DISASSEMBLY_INT"] = parseInt( + constants.INLINE_DISASSEMBLY_STR +); export default Object.freeze(constants); diff --git a/gdbgui/static/css/gdbgui.css b/gdbgui/static/css/gdbgui.css index 41d5376f..cc658f3a 100644 --- a/gdbgui/static/css/gdbgui.css +++ b/gdbgui/static/css/gdbgui.css @@ -29,6 +29,9 @@ td{ .bold{ font-weight: bold; } +.italic{ + font-style: italic; +} .pre{ white-space: pre; } @@ -172,6 +175,7 @@ div.breakpoint:hover div.breakpoint_trashcan, } .line_num.conditional_breakpoint{ background: #ff9966 !important; + color:black; } td.assembly{ padding-bottom: 0px; From 6f5b407bcf44d4a4de76b3cdac499af208dacba8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sun, 15 Sep 2019 16:47:30 -0700 Subject: [PATCH 6/6] fix lint --- gdbgui/src/js/constants.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gdbgui/src/js/constants.js b/gdbgui/src/js/constants.js index e98a2492..281e28af 100644 --- a/gdbgui/src/js/constants.js +++ b/gdbgui/src/js/constants.js @@ -53,15 +53,11 @@ let constants = { keys_to_not_log_changes_in_console: ["gdb_mi_output", "gdb_console_entries"] }; -constants["IGNORE_ERRORS_TOKEN_INT"] = parseInt( - constants.IGNORE_ERRORS_TOKEN_STR -); +constants["IGNORE_ERRORS_TOKEN_INT"] = parseInt(constants.IGNORE_ERRORS_TOKEN_STR); constants["DISASSEMBLY_FOR_MISSING_FILE_INT"] = parseInt( constants.DISASSEMBLY_FOR_MISSING_FILE_STR ); constants["CREATE_VAR_INT"] = parseInt(constants.CREATE_VAR_STR); -constants["INLINE_DISASSEMBLY_INT"] = parseInt( - constants.INLINE_DISASSEMBLY_STR -); +constants["INLINE_DISASSEMBLY_INT"] = parseInt(constants.INLINE_DISASSEMBLY_STR); export default Object.freeze(constants);