Fix debugging of self-referencing functions. Fixes #2524

This commit is contained in:
Murtuza Zabuawala 2017-12-05 13:32:06 +09:00 committed by Dave Page
parent bac9c77c4e
commit 136ed0d3e2
11 changed files with 43 additions and 37 deletions

View File

@ -979,6 +979,7 @@ define([
var DebuggerStackModel = Backbone.Model.extend({
defaults: {
frame_id: 0,
name: undefined,
value: undefined,
line_no: undefined
@ -991,17 +992,22 @@ define([
});
var stackGridCols = [
{name: 'name', label: gettext('Name'), type:'text', editable: false, cell:'string'},
{name: 'value', label: gettext('Value'), type:'text', editable: false, cell:'string'},
{name: 'line_no', label: gettext('Line No.'), type:'text', editable: false, cell:'string'}
{name: 'name', label: gettext('Name'), type:'text',
editable: false, cell:'string'},
{name: 'value', label: gettext('Value'), type:'text',
editable: false, cell:'string'},
{name: 'line_no', label: gettext('Line No.'), type:'text',
editable: false, cell:'string'}
];
var my_obj = [];
if (result.length != 0)
{
for (var i = 0; i < result.length; i++) {
my_obj.push({ "name": result[i].targetname, "value": result[i].args, "line_no": result[i].linenumber });
}
for (var i = 0; i < result.length; i++) {
my_obj.push({
"frame_id": i,
"name": result[i].targetname,
"value": result[i].args,
"line_no": result[i].linenumber
});
}
var stackColl = this.stackColl = new StackCollection(my_obj);
@ -1018,14 +1024,11 @@ define([
},
rowClick: function(e) {
//Find which row is selected and depending on that send the frame id
for (var i = 0; i < this.model.collection.length; i++) {
if (this.model.collection.models[i].get('name') == this.model.get('name')) {
self.frame_id_ = i;
break;
}
}
self.frame_id = this.model.get('frame_id');
this.model.trigger('backgrid:row:selected', this);
self.stack_grid.$el.find("td").css("background-color", this.disabledColor);
self.stack_grid.$el.find("td").css(
"background-color", this.disabledColor
);
this.$el.find("td").css("background-color", this.highlightColor);
}
}),
@ -1036,7 +1039,10 @@ define([
stack_grid.render();
// Render the stack grid into stack panel
pgTools.DirectDebug.stack_pane_panel.$container.find('.stack_pane').append(stack_grid.el);
pgTools.DirectDebug.stack_pane_panel
.$container
.find('.stack_pane')
.append(stack_grid.el);
},
@ -1235,7 +1241,7 @@ define([
// Make ajax call to listen the database message
var baseUrl = url_for('debugger.select_frame', {
'trans_id': pgTools.DirectDebug.trans_id,
'frame_id': self.frame_id_
'frame_id': self.frame_id
});
$.ajax({
url: baseUrl,

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func AND s.pkg = p.pkg) AS args
WHERE s.func = p.func AND s.pkg = p.pkg ORDER BY s.level LIMIT 1) AS args
FROM pldbg_continue({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -7,6 +7,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func AND s.pkg = p.pkg) AS args
WHERE s.func = p.func AND s.pkg = p.pkg ORDER BY s.level LIMIT 1) AS args
FROM pldbg_select_frame({{session_id}}::INTEGER, {{frame_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func AND s.pkg = p.pkg) AS args
WHERE s.func = p.func AND s.pkg = p.pkg ORDER BY s.level LIMIT 1) AS args
FROM pldbg_step_into({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func AND s.pkg = p.pkg) AS args
WHERE s.func = p.func AND s.pkg = p.pkg ORDER BY s.level LIMIT 1) AS args
FROM pldbg_step_over({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func AND s.pkg = p.pkg) AS args
WHERE s.func = p.func AND s.pkg = p.pkg ORDER BY s.level LIMIT 1) AS args
FROM pldbg_wait_for_breakpoint({{session_id}}::INTEGER) p;
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func) AS args
WHERE s.func = p.func ORDER BY s.level LIMIT 1) AS args
FROM pldbg_continue({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func) AS args
WHERE s.func = p.func ORDER BY s.level LIMIT 1) AS args
FROM pldbg_select_frame({{session_id}}::INTEGER, {{frame_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func) AS args
WHERE s.func = p.func ORDER BY s.level LIMIT 1) AS args
FROM pldbg_step_into({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -6,6 +6,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func) AS args
WHERE s.func = p.func ORDER BY s.level LIMIT 1) AS args
FROM pldbg_step_over({{session_id}}::INTEGER) p
{% endif %}
{% endif %}

View File

@ -7,6 +7,6 @@ SELECT
(SELECT
s.args
FROM pldbg_get_stack({{session_id}}::INTEGER) s
WHERE s.func = p.func) AS args
WHERE s.func = p.func ORDER BY s.level LIMIT 1) AS args
FROM pldbg_wait_for_breakpoint({{session_id}}::INTEGER) p
{% endif %}
{% endif %}