* GDB MI Reverse Commands added [3 of 3]
@ 2009-08-26 15:10 Jakob Engblom
2009-08-27 1:43 ` Michael Snyder
` (2 more replies)
0 siblings, 3 replies; 20+ messages in thread
From: Jakob Engblom @ 2009-08-26 15:10 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 511 bytes --]
Final part: the test suite for gdb-MI reverse debugging commands. Attached as a
file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/
Best regards,
/jakob
_______________________________________________________
Jakob Engblom, PhD, Technical Marketing Manager
Virtutech Direct: +46 8 690 07 47
Drottningholmsvägen 22 Mobile: +46 709 242 646
11243 Stockholm Web: www.virtutech.com
Sweden
________________________________________________________
[-- Attachment #2: mi2-reverse.exp --]
[-- Type: application/octet-stream, Size: 6054 bytes --]
# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test Machine interface (MI) operations
# Verify that, using the MI, we can run a simple program in both forward
# and reverse directions with the following execution commands:
# - exec-continue
# - exec-finish
# - exec-next
# - exec-step
# - exec-next-instruction
# - exec-step-instruction
# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#
if ![target_info exists gdb,can_reverse] {
return
}
load_lib mi-support.exp
set MIFLAGS "-i=mi2"
gdb_exit
if [mi_gdb_start] {
continue
}
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/mi2-reverse
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested mi2-reverse.exp
return -1
}
mi_run_to_main
if [target_info exists gdb,use_precord] {
# Activate process record/replay
if [mi_gdb_test "-interpreter-exec console record" \
{\^done} "Turn on process record"] {
warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
return -1
}
}
# Locate line numbers in basics.c.
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
set line_callee3_body [expr $line_callee3_head + 2]
set line_callee3_close [expr $line_callee3_head + 3]
set line_callee2_head [gdb_get_line_number "callee2 ("]
set line_callee2_body [expr $line_callee2_head + 2]
set line_callee2_close [expr $line_callee2_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
set line_callee1_close [expr $line_callee1_head + 3]
set line_callme_head [gdb_get_line_number "callme"]
set line_callme_body [expr $line_callme_head + 2]
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
set line_main_hello [gdb_get_line_number "Hello, World!"]
set line_main_callme_1 [gdb_get_line_number "callme (1"]
# Forward execute to the callme() function, so that we can
# execute backward from there.
mi_continue_to callme
mi_delete_breakpoints
proc test_controlled_execution_reverse {} {
global mi_gdb_prompt
global srcfile
global hex
global line_callee4_head line_callee4_body
global line_callee3_head line_callee3_body line_callee3_close
global line_callee2_head line_callee2_body line_callee2_close
global line_callee1_head line_callee1_body line_callee1_close
global line_main_head line_main_body
global line_main_hello line_main_callme_1
# Test exec-reverse-finish
mi_execute_to "exec-finish --reverse" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_callme_1 "" \
"reverse finish from callme"
# Test exec-reverse-next
# FIXME: Why does it take 2 next commands to get back to the
# previous line?
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
# Test exec-reverse-step
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee1" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
"basics.c" $line_callee1_close "" \
"reverse step to callee1"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee2" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee2_close "" \
"reverse step to callee2"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee3_close "" \
"reverse step to callee3"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse step to callee4"
# Test exec-reverse-[step|next]-instruction
mi_execute_to "exec-step-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-step-instruction at callee4"
mi_execute_to "exec-next-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-next-instruction at callee4"
# Test exec-reverse-continue
mi_create_breakpoint "-t basics.c:$line_callee3_head" \
3 del callee3 ".*basics.c" $line_callee3_head $hex \
"insert temp breakpoint at basics.c:$line_callee3_head"
mi_execute_to "exec-continue --reverse" \
"breakpoint-hit" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" "\[0-9\]+" \
{ "" "disp=\"del\""} \
"reverse-continue at callee3"
mi_execute_to "exec-continue --reverse" \
"" "main" "" \
"basics.c" $line_main_body "" \
"reverse-continue at main"
}
test_controlled_execution_reverse
mi_gdb_exit
return 0
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: GDB MI Reverse Commands added [3 of 3]
2009-08-26 15:10 GDB MI Reverse Commands added [3 of 3] Jakob Engblom
@ 2009-08-27 1:43 ` Michael Snyder
2009-08-31 13:13 ` Jakob Engblom
2009-09-02 8:23 ` Vladimir Prus
2009-12-15 19:42 ` Michael Snyder
2 siblings, 1 reply; 20+ messages in thread
From: Michael Snyder @ 2009-08-27 1:43 UTC (permalink / raw)
To: Jakob Engblom; +Cc: gdb-patches
Jakob Engblom wrote:
> Final part: the test suite for gdb-MI reverse debugging commands. Attached as a
> file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/
>
> Best regards,
>
> /jakob
>
> _______________________________________________________
>
> Jakob Engblom, PhD, Technical Marketing Manager
>
> Virtutech Direct: +46 8 690 07 47
> Drottningholmsvägen 22 Mobile: +46 709 242 646
> 11243 Stockholm Web: www.virtutech.com
> Sweden
> ________________________________________________________
Nice work on the tests! Who wrote them? We need a name for the ChangeLog.
One small change --
> # Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
It's a new file, so it can only be "Copyright 2009".
Thanks Jakob,
Michael
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: GDB MI Reverse Commands added [3 of 3]
2009-08-27 1:43 ` Michael Snyder
@ 2009-08-31 13:13 ` Jakob Engblom
2009-09-01 12:48 ` Jakob Engblom
0 siblings, 1 reply; 20+ messages in thread
From: Jakob Engblom @ 2009-08-31 13:13 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 699 bytes --]
Updated the reflect Michael Snyder's comment on the copyright date.
Changelog:
testsuite/gdb.mi/
* mi2-reverse.exp: New file. Test for reverse option to the following MI
commands: exec-continue, exec-finish, exec-next, exec-step,
exec-next-instruction, exec-step-instruction. (liangyi@newfield-tech.com)
Best regards,
/jakob
_______________________________________________________
Jakob Engblom, PhD, Technical Marketing Manager
Virtutech Direct: +46 8 690 07 47
Drottningholmsvägen 22 Mobile: +46 709 242 646
11243 Stockholm Web: www.virtutech.com
Sweden
________________________________________________________
[-- Attachment #2: mi2-reverse.exp --]
[-- Type: application/octet-stream, Size: 6000 bytes --]
# Copyright 2009
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test Machine interface (MI) operations
# Verify that, using the MI, we can run a simple program in both forward
# and reverse directions with the following execution commands:
# - exec-continue
# - exec-finish
# - exec-next
# - exec-step
# - exec-next-instruction
# - exec-step-instruction
# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#
if ![target_info exists gdb,can_reverse] {
return
}
load_lib mi-support.exp
set MIFLAGS "-i=mi2"
gdb_exit
if [mi_gdb_start] {
continue
}
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/mi2-reverse
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested mi2-reverse.exp
return -1
}
mi_run_to_main
if [target_info exists gdb,use_precord] {
# Activate process record/replay
if [mi_gdb_test "-interpreter-exec console record" \
{\^done} "Turn on process record"] {
warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
return -1
}
}
# Locate line numbers in basics.c.
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
set line_callee3_body [expr $line_callee3_head + 2]
set line_callee3_close [expr $line_callee3_head + 3]
set line_callee2_head [gdb_get_line_number "callee2 ("]
set line_callee2_body [expr $line_callee2_head + 2]
set line_callee2_close [expr $line_callee2_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
set line_callee1_close [expr $line_callee1_head + 3]
set line_callme_head [gdb_get_line_number "callme"]
set line_callme_body [expr $line_callme_head + 2]
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
set line_main_hello [gdb_get_line_number "Hello, World!"]
set line_main_callme_1 [gdb_get_line_number "callme (1"]
# Forward execute to the callme() function, so that we can
# execute backward from there.
mi_continue_to callme
mi_delete_breakpoints
proc test_controlled_execution_reverse {} {
global mi_gdb_prompt
global srcfile
global hex
global line_callee4_head line_callee4_body
global line_callee3_head line_callee3_body line_callee3_close
global line_callee2_head line_callee2_body line_callee2_close
global line_callee1_head line_callee1_body line_callee1_close
global line_main_head line_main_body
global line_main_hello line_main_callme_1
# Test exec-reverse-finish
mi_execute_to "exec-finish --reverse" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_callme_1 "" \
"reverse finish from callme"
# Test exec-reverse-next
# FIXME: Why does it take 2 next commands to get back to the
# previous line?
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
# Test exec-reverse-step
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee1" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
"basics.c" $line_callee1_close "" \
"reverse step to callee1"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee2" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee2_close "" \
"reverse step to callee2"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee3_close "" \
"reverse step to callee3"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse step to callee4"
# Test exec-reverse-[step|next]-instruction
mi_execute_to "exec-step-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-step-instruction at callee4"
mi_execute_to "exec-next-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-next-instruction at callee4"
# Test exec-reverse-continue
mi_create_breakpoint "-t basics.c:$line_callee3_head" \
3 del callee3 ".*basics.c" $line_callee3_head $hex \
"insert temp breakpoint at basics.c:$line_callee3_head"
mi_execute_to "exec-continue --reverse" \
"breakpoint-hit" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" "\[0-9\]+" \
{ "" "disp=\"del\""} \
"reverse-continue at callee3"
mi_execute_to "exec-continue --reverse" \
"" "main" "" \
"basics.c" $line_main_body "" \
"reverse-continue at main"
}
test_controlled_execution_reverse
mi_gdb_exit
return 0
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: GDB MI Reverse Commands added [3 of 3]
2009-08-31 13:13 ` Jakob Engblom
@ 2009-09-01 12:48 ` Jakob Engblom
2009-09-01 17:36 ` Tom Tromey
2009-09-07 1:18 ` Michael Snyder
0 siblings, 2 replies; 20+ messages in thread
From: Jakob Engblom @ 2009-09-01 12:48 UTC (permalink / raw)
To: Jakob Engblom, gdb-patches
> Changelog:
>
> testsuite/gdb.mi/
> * mi2-reverse.exp: New file. Test for reverse option to the following MI
> commands: exec-continue, exec-finish, exec-next, exec-step,
> exec-next-instruction, exec-step-instruction. (liangyi@newfield-tech.com)
And finally, to simplify the paperwork, we change the contributor here so taht
our subcontractor does not have to deal with copyright assignments.
* mi2-reverse.exp: 2009-08-31, Tomas Holmberg <th@virtutech.com> New file. Test
for reverse option to the following MI commands: exec-continue, exec-finish,
exec-next, exec-step, exec-next-instruction, exec-step-instruction, working on
process record.
/jakob
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-01 12:48 ` Jakob Engblom
@ 2009-09-01 17:36 ` Tom Tromey
2009-09-07 1:18 ` Michael Snyder
1 sibling, 0 replies; 20+ messages in thread
From: Tom Tromey @ 2009-09-01 17:36 UTC (permalink / raw)
To: Jakob Engblom; +Cc: gdb-patches
>>>>> "Jakob" == Jakob Engblom <jakob@virtutech.com> writes:
>> testsuite/gdb.mi/
>> * mi2-reverse.exp: New file. Test for reverse option to the following MI
>> commands: exec-continue, exec-finish, exec-next, exec-step,
>> exec-next-instruction, exec-step-instruction. (liangyi@newfield-tech.com)
Jakob> And finally, to simplify the paperwork, we change the contributor
Jakob> here so taht our subcontractor does not have to deal with
Jakob> copyright assignments.
Please contact the FSF assignment people to see whether this is
acceptable. CC me on the email. Thanks.
Tom
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-01 12:48 ` Jakob Engblom
2009-09-01 17:36 ` Tom Tromey
@ 2009-09-07 1:18 ` Michael Snyder
2009-09-07 7:10 ` Jakob Engblom
1 sibling, 1 reply; 20+ messages in thread
From: Michael Snyder @ 2009-09-07 1:18 UTC (permalink / raw)
To: Jakob Engblom; +Cc: gdb-patches
Jakob Engblom wrote:
>> Changelog:
>>
>> testsuite/gdb.mi/
>> * mi2-reverse.exp: New file. Test for reverse option to the following MI
>> commands: exec-continue, exec-finish, exec-next, exec-step,
>> exec-next-instruction, exec-step-instruction. (liangyi@newfield-tech.com)
>
> And finally, to simplify the paperwork, we change the contributor here so taht
> our subcontractor does not have to deal with copyright assignments.
>
> * mi2-reverse.exp: 2009-08-31, Tomas Holmberg <th@virtutech.com> New file. Test
> for reverse option to the following MI commands: exec-continue, exec-finish,
> exec-next, exec-step, exec-next-instruction, exec-step-instruction, working on
> process record.
Where do we stand with getting this contribution into 7.0?
Is there a question about the assignment, and if so, is anyone pursuing it?
Michael
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: GDB MI Reverse Commands added [3 of 3]
2009-09-07 1:18 ` Michael Snyder
@ 2009-09-07 7:10 ` Jakob Engblom
2009-09-07 18:09 ` Joel Brobecker
0 siblings, 1 reply; 20+ messages in thread
From: Jakob Engblom @ 2009-09-07 7:10 UTC (permalink / raw)
To: 'Michael Snyder'; +Cc: gdb-patches
> Where do we stand with getting this contribution into 7.0?
>
> Is there a question about the assignment, and if so, is anyone pursuing it?
Yes and Yes.
I have emailed the FSF, gotten no reply.
In general, what is your experience in signing these things: is it easier for
Virtutech to sign in as a company? Or should we get one agreement per employee?
/jakob
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-07 7:10 ` Jakob Engblom
@ 2009-09-07 18:09 ` Joel Brobecker
2009-09-08 7:11 ` Jakob Engblom
0 siblings, 1 reply; 20+ messages in thread
From: Joel Brobecker @ 2009-09-07 18:09 UTC (permalink / raw)
To: Jakob Engblom; +Cc: 'Michael Snyder', gdb-patches
> In general, what is your experience in signing these things: is it
> easier for Virtutech to sign in as a company? Or should we get one
> agreement per employee?
I don't know that it matters much in terms of difficulty or delay
whether you sign-in as a company or as an individual. AdaCore signed
a blanket agreement for all its employees, and it's been extremely
convenient.
--
Joel
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-08-26 15:10 GDB MI Reverse Commands added [3 of 3] Jakob Engblom
2009-08-27 1:43 ` Michael Snyder
@ 2009-09-02 8:23 ` Vladimir Prus
2009-09-03 18:44 ` Jakob Engblom
2009-12-15 19:42 ` Michael Snyder
2 siblings, 1 reply; 20+ messages in thread
From: Vladimir Prus @ 2009-09-02 8:23 UTC (permalink / raw)
To: gdb-patches
Jakob Engblom wrote:
> Final part: the test suite for gdb-MI reverse debugging commands. Attached as a
> file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/
The file should be called mi-reverse.exp, I think, because mi2- files are supposed to test
that whatever was once announced as MI2 is not broken. And this is new development. Likewise,
set MIFLAGS "-i=mi2"
should be:
set MIFLAGS "-i=mi"
Also, I would appreciate if this:
# Test exec-reverse-next
# FIXME: Why does it take 2 next commands to get back to the
# previous line?
were somehow addressed. I am not familiar with details of reverse behaviour, so I
did not even try to check that the tested commands and locations, etc, are right.
This is OK with the above fixes and the fixes asked for by Michael.
Thanks,
Volodya
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: GDB MI Reverse Commands added [3 of 3]
2009-09-02 8:23 ` Vladimir Prus
@ 2009-09-03 18:44 ` Jakob Engblom
2009-09-03 20:13 ` Michael Snyder
` (2 more replies)
0 siblings, 3 replies; 20+ messages in thread
From: Jakob Engblom @ 2009-09-03 18:44 UTC (permalink / raw)
To: 'Vladimir Prus', gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1159 bytes --]
> The file should be called mi-reverse.exp, I think, because mi2- files are
> supposed to test
> that whatever was once announced as MI2 is not broken. And this is new
> development. Likewise,
Done.
> set MIFLAGS "-i=mi2"
>
> should be:
>
> set MIFLAGS "-i=mi"
Done.
> Also, I would appreciate if this:
>
> # Test exec-reverse-next
> # FIXME: Why does it take 2 next commands to get back to the
> # previous line?
>
> were somehow addressed. I am not familiar with details of reverse behaviour,
so I
> did not even try to check that the tested commands and locations, etc, are
right.
Since this is tested on top of process record, I think I am not the best person
to answer... but in general, what tends to happen in reverse in my experience is
this:
We have lines of code (or instructions)
A
B
And we stop with a breakpoint in line B.
We are then at the end of B, or in the middle of B, in the execution.
Then, doing reverse one step/instruction/line will move you to the start of B.
And another step/instruction/line moves you to before A was executed.
Does that make sense for process record?
/jakob
[-- Attachment #2: mi-reverse.exp --]
[-- Type: application/octet-stream, Size: 6101 bytes --]
# Copyright 2009
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test Machine interface (MI) operations
# Verify that, using the MI, we can run a simple program in both forward
# and reverse directions with the following execution commands:
# - exec-continue
# - exec-finish
# - exec-next
# - exec-step
# - exec-next-instruction
# - exec-step-instruction
# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#
if ![target_info exists gdb,can_reverse] {
return
}
load_lib mi-support.exp
set MIFLAGS "-i=mi"
gdb_exit
if [mi_gdb_start] {
continue
}
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/mi2-reverse
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested mi2-reverse.exp
return -1
}
mi_run_to_main
if [target_info exists gdb,use_precord] {
# Activate process record/replay
if [mi_gdb_test "-interpreter-exec console record" \
{\^done} "Turn on process record"] {
warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
return -1
}
}
# Locate line numbers in basics.c.
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
set line_callee3_body [expr $line_callee3_head + 2]
set line_callee3_close [expr $line_callee3_head + 3]
set line_callee2_head [gdb_get_line_number "callee2 ("]
set line_callee2_body [expr $line_callee2_head + 2]
set line_callee2_close [expr $line_callee2_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
set line_callee1_close [expr $line_callee1_head + 3]
set line_callme_head [gdb_get_line_number "callme"]
set line_callme_body [expr $line_callme_head + 2]
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
set line_main_hello [gdb_get_line_number "Hello, World!"]
set line_main_callme_1 [gdb_get_line_number "callme (1"]
# Forward execute to the callme() function, so that we can
# execute backward from there.
mi_continue_to callme
mi_delete_breakpoints
proc test_controlled_execution_reverse {} {
global mi_gdb_prompt
global srcfile
global hex
global line_callee4_head line_callee4_body
global line_callee3_head line_callee3_body line_callee3_close
global line_callee2_head line_callee2_body line_callee2_close
global line_callee1_head line_callee1_body line_callee1_close
global line_main_head line_main_body
global line_main_hello line_main_callme_1
# Test exec-reverse-finish
mi_execute_to "exec-finish --reverse" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_callme_1 "" \
"reverse finish from callme"
# Test exec-reverse-next
# It takes two steps to get back to the previous line,
# as the first step moves us to the start of the current line,
# and the one after that moves back to the previous line.
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
# Test exec-reverse-step
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee1" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
"basics.c" $line_callee1_close "" \
"reverse step to callee1"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee2" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee2_close "" \
"reverse step to callee2"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee3_close "" \
"reverse step to callee3"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse step to callee4"
# Test exec-reverse-[step|next]-instruction
mi_execute_to "exec-step-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-step-instruction at callee4"
mi_execute_to "exec-next-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-next-instruction at callee4"
# Test exec-reverse-continue
mi_create_breakpoint "-t basics.c:$line_callee3_head" \
3 del callee3 ".*basics.c" $line_callee3_head $hex \
"insert temp breakpoint at basics.c:$line_callee3_head"
mi_execute_to "exec-continue --reverse" \
"breakpoint-hit" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" "\[0-9\]+" \
{ "" "disp=\"del\""} \
"reverse-continue at callee3"
mi_execute_to "exec-continue --reverse" \
"" "main" "" \
"basics.c" $line_main_body "" \
"reverse-continue at main"
}
test_controlled_execution_reverse
mi_gdb_exit
return 0
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-03 18:44 ` Jakob Engblom
@ 2009-09-03 20:13 ` Michael Snyder
2009-09-07 1:44 ` Hui Zhu
2009-12-15 19:43 ` Michael Snyder
2 siblings, 0 replies; 20+ messages in thread
From: Michael Snyder @ 2009-09-03 20:13 UTC (permalink / raw)
To: Jakob Engblom; +Cc: 'Vladimir Prus', gdb-patches
Jakob Engblom wrote:
>> Also, I would appreciate if this:
>>
>> # Test exec-reverse-next
>> # FIXME: Why does it take 2 next commands to get back to the
>> # previous line?
>>
>> were somehow addressed. I am not familiar with details of reverse behaviour,
> so I
>> did not even try to check that the tested commands and locations, etc, are
> right.
>
> Since this is tested on top of process record, I think I am not the best person
> to answer... but in general, what tends to happen in reverse in my experience is
> this:
>
> We have lines of code (or instructions)
>
> A
> B
>
> And we stop with a breakpoint in line B.
>
> We are then at the end of B, or in the middle of B, in the execution.
Let's say lines of code, then -- it doesn't generally make sense to be
stopped in the middle of an instruction.
So to make sure we are on the same page -- we've stopped at a
breakpoint in the *MIDDLE* of line B?
> Then, doing reverse one step/instruction/line will move you to the start of B.
>
> And another step/instruction/line moves you to before A was executed.
>
> Does that make sense for process record?
It does under the assumptions that I named above.
I suppose if we were talking about instructions that can be
interrupted in the middle, it might make sense there too.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-03 18:44 ` Jakob Engblom
2009-09-03 20:13 ` Michael Snyder
@ 2009-09-07 1:44 ` Hui Zhu
2009-12-15 19:43 ` Michael Snyder
2 siblings, 0 replies; 20+ messages in thread
From: Hui Zhu @ 2009-09-07 1:44 UTC (permalink / raw)
To: Jakob Engblom; +Cc: Vladimir Prus, gdb-patches, Michael Snyder
On Fri, Sep 4, 2009 at 02:43, Jakob Engblom<jakob@virtutech.com> wrote:
>> The file should be called mi-reverse.exp, I think, because mi2- files are
>> supposed to test
>> that whatever was once announced as MI2 is not broken. And this is new
>> development. Likewise,
>
> Done.
>
>> set MIFLAGS "-i=mi2"
>>
>> should be:
>>
>> set MIFLAGS "-i=mi"
>
> Done.
>
>> Also, I would appreciate if this:
>>
>> # Test exec-reverse-next
>> # FIXME: Why does it take 2 next commands to get back to the
>> # previous line?
>>
>> were somehow addressed. I am not familiar with details of reverse behaviour,
> so I
>> did not even try to check that the tested commands and locations, etc, are
> right.
>
> Since this is tested on top of process record, I think I am not the best person
> to answer... but in general, what tends to happen in reverse in my experience is
> this:
>
> We have lines of code (or instructions)
>
> A
> B
>
> And we stop with a breakpoint in line B.
>
> We are then at the end of B, or in the middle of B, in the execution.
>
> Then, doing reverse one step/instruction/line will move you to the start of B.
>
> And another step/instruction/line moves you to before A was executed.
>
> Does that make sense for process record?
I am not sure. Let me talk what I think about it.
The instruction is:
A
B
When inferior stop at B by breakpoint of line.
We are in the begin of B.
GDB will show we are in B.
A
<----------- This is inferior at. PC is point to B.
B
reverse-stepi
We are in the begin of A.
GDB will show we are in A.
<----------- This is inferior at. PC is point to A.
A
B
Thanks,
Hui
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-09-03 18:44 ` Jakob Engblom
2009-09-03 20:13 ` Michael Snyder
2009-09-07 1:44 ` Hui Zhu
@ 2009-12-15 19:43 ` Michael Snyder
2009-12-16 9:59 ` Vladimir Prus
2 siblings, 1 reply; 20+ messages in thread
From: Michael Snyder @ 2009-12-15 19:43 UTC (permalink / raw)
To: Jakob Engblom; +Cc: 'Vladimir Prus', gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1303 bytes --]
Jakob Engblom wrote:
>> The file should be called mi-reverse.exp, I think, because mi2- files are
>> supposed to test
>> that whatever was once announced as MI2 is not broken. And this is new
>> development. Likewise,
Oops, sorry -- revised part 3 of MI reverse patch.
> Done.
>
>> set MIFLAGS "-i=mi2"
>>
>> should be:
>>
>> set MIFLAGS "-i=mi"
>
> Done.
>
>> Also, I would appreciate if this:
>>
>> # Test exec-reverse-next
>> # FIXME: Why does it take 2 next commands to get back to the
>> # previous line?
>>
>> were somehow addressed. I am not familiar with details of reverse behaviour,
> so I
>> did not even try to check that the tested commands and locations, etc, are
> right.
>
> Since this is tested on top of process record, I think I am not the best person
> to answer... but in general, what tends to happen in reverse in my experience is
> this:
>
> We have lines of code (or instructions)
>
> A
> B
>
> And we stop with a breakpoint in line B.
>
> We are then at the end of B, or in the middle of B, in the execution.
>
> Then, doing reverse one step/instruction/line will move you to the start of B.
>
> And another step/instruction/line moves you to before A was executed.
>
> Does that make sense for process record?
>
> /jakob
[-- Attachment #2: mi-reverse.exp --]
[-- Type: text/plain, Size: 5927 bytes --]
# Copyright 2009
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test Machine interface (MI) operations
# Verify that, using the MI, we can run a simple program in both forward
# and reverse directions with the following execution commands:
# - exec-continue
# - exec-finish
# - exec-next
# - exec-step
# - exec-next-instruction
# - exec-step-instruction
# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#
if ![target_info exists gdb,can_reverse] {
return
}
load_lib mi-support.exp
set MIFLAGS "-i=mi"
gdb_exit
if [mi_gdb_start] {
continue
}
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/mi2-reverse
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested mi2-reverse.exp
return -1
}
mi_run_to_main
if [target_info exists gdb,use_precord] {
# Activate process record/replay
if [mi_gdb_test "-interpreter-exec console record" \
{\^done} "Turn on process record"] {
warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
return -1
}
}
# Locate line numbers in basics.c.
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
set line_callee3_body [expr $line_callee3_head + 2]
set line_callee3_close [expr $line_callee3_head + 3]
set line_callee2_head [gdb_get_line_number "callee2 ("]
set line_callee2_body [expr $line_callee2_head + 2]
set line_callee2_close [expr $line_callee2_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
set line_callee1_close [expr $line_callee1_head + 3]
set line_callme_head [gdb_get_line_number "callme"]
set line_callme_body [expr $line_callme_head + 2]
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
set line_main_hello [gdb_get_line_number "Hello, World!"]
set line_main_callme_1 [gdb_get_line_number "callme (1"]
# Forward execute to the callme() function, so that we can
# execute backward from there.
mi_continue_to callme
mi_delete_breakpoints
proc test_controlled_execution_reverse {} {
global mi_gdb_prompt
global srcfile
global hex
global line_callee4_head line_callee4_body
global line_callee3_head line_callee3_body line_callee3_close
global line_callee2_head line_callee2_body line_callee2_close
global line_callee1_head line_callee1_body line_callee1_close
global line_main_head line_main_body
global line_main_hello line_main_callme_1
# Test exec-reverse-finish
mi_execute_to "exec-finish --reverse" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_callme_1 "" \
"reverse finish from callme"
# Test exec-reverse-next
# It takes two steps to get back to the previous line,
# as the first step moves us to the start of the current line,
# and the one after that moves back to the previous line.
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
# Test exec-reverse-step
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee1" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
"basics.c" $line_callee1_close "" \
"reverse step to callee1"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee2" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee2_close "" \
"reverse step to callee2"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee3_close "" \
"reverse step to callee3"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse step to callee4"
# Test exec-reverse-[step|next]-instruction
mi_execute_to "exec-step-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-step-instruction at callee4"
mi_execute_to "exec-next-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-next-instruction at callee4"
# Test exec-reverse-continue
mi_create_breakpoint "-t basics.c:$line_callee3_head" \
3 del callee3 ".*basics.c" $line_callee3_head $hex \
"insert temp breakpoint at basics.c:$line_callee3_head"
mi_execute_to "exec-continue --reverse" \
"breakpoint-hit" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" "\[0-9\]+" \
{ "" "disp=\"del\""} \
"reverse-continue at callee3"
mi_execute_to "exec-continue --reverse" \
"" "main" "" \
"basics.c" $line_main_body "" \
"reverse-continue at main"
}
test_controlled_execution_reverse
mi_gdb_exit
return 0
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: GDB MI Reverse Commands added [3 of 3]
2009-12-15 19:43 ` Michael Snyder
@ 2009-12-16 9:59 ` Vladimir Prus
0 siblings, 0 replies; 20+ messages in thread
From: Vladimir Prus @ 2009-12-16 9:59 UTC (permalink / raw)
To: gdb-patches
Michael Snyder wrote:
> Jakob Engblom wrote:
>>> The file should be called mi-reverse.exp, I think, because mi2- files are
>>> supposed to test
>>> that whatever was once announced as MI2 is not broken. And this is new
>>> development. Likewise,
>
> Oops, sorry -- revised part 3 of MI reverse patch.
For avoidance of doubt, this seems fine to me.
- Volodya
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-08-26 15:10 GDB MI Reverse Commands added [3 of 3] Jakob Engblom
2009-08-27 1:43 ` Michael Snyder
2009-09-02 8:23 ` Vladimir Prus
@ 2009-12-15 19:42 ` Michael Snyder
2009-12-16 8:06 ` Vladimir Prus
2 siblings, 1 reply; 20+ messages in thread
From: Michael Snyder @ 2009-12-15 19:42 UTC (permalink / raw)
To: Vladimir Prus; +Cc: Jakob Engblom, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 209 bytes --]
Jakob Engblom wrote:
> Final part: the test suite for gdb-MI reverse debugging commands. Attached as a
> file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/
>
> Best regards,
>
> /jakob
Part 3, test suite.
[-- Attachment #2: mi2-reverse.exp --]
[-- Type: text/plain, Size: 5881 bytes --]
# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Test Machine interface (MI) operations
# Verify that, using the MI, we can run a simple program in both forward
# and reverse directions with the following execution commands:
# - exec-continue
# - exec-finish
# - exec-next
# - exec-step
# - exec-next-instruction
# - exec-step-instruction
# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#
if ![target_info exists gdb,can_reverse] {
return
}
load_lib mi-support.exp
set MIFLAGS "-i=mi2"
gdb_exit
if [mi_gdb_start] {
continue
}
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/mi2-reverse
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested mi2-reverse.exp
return -1
}
mi_run_to_main
if [target_info exists gdb,use_precord] {
# Activate process record/replay
if [mi_gdb_test "-interpreter-exec console record" \
{\^done} "Turn on process record"] {
warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
return -1
}
}
# Locate line numbers in basics.c.
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
set line_callee3_body [expr $line_callee3_head + 2]
set line_callee3_close [expr $line_callee3_head + 3]
set line_callee2_head [gdb_get_line_number "callee2 ("]
set line_callee2_body [expr $line_callee2_head + 2]
set line_callee2_close [expr $line_callee2_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
set line_callee1_close [expr $line_callee1_head + 3]
set line_callme_head [gdb_get_line_number "callme"]
set line_callme_body [expr $line_callme_head + 2]
set line_main_head [gdb_get_line_number "main ("]
set line_main_body [expr $line_main_head + 2]
set line_main_hello [gdb_get_line_number "Hello, World!"]
set line_main_callme_1 [gdb_get_line_number "callme (1"]
# Forward execute to the callme() function, so that we can
# execute backward from there.
mi_continue_to callme
mi_delete_breakpoints
proc test_controlled_execution_reverse {} {
global mi_gdb_prompt
global srcfile
global hex
global line_callee4_head line_callee4_body
global line_callee3_head line_callee3_body line_callee3_close
global line_callee2_head line_callee2_body line_callee2_close
global line_callee1_head line_callee1_body line_callee1_close
global line_main_head line_main_body
global line_main_hello line_main_callme_1
# Test exec-reverse-finish
mi_execute_to "exec-finish --reverse" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_callme_1 "" \
"reverse finish from callme"
# Test exec-reverse-next
# FIXME: Why does it take 2 next commands to get back to the
# previous line?
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
# Test exec-reverse-step
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee1" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
"basics.c" $line_callee1_close "" \
"reverse step to callee1"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee2" \
"\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee2_close "" \
"reverse step to callee2"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" $line_callee3_close "" \
"reverse step to callee3"
mi_execute_to "exec-step --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse step to callee4"
# Test exec-reverse-[step|next]-instruction
mi_execute_to "exec-step-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-step-instruction at callee4"
mi_execute_to "exec-next-instruction --reverse" \
"end-stepping-range" "callee4" "" \
"basics.c" "\[0-9\]+" "" \
"reverse-next-instruction at callee4"
# Test exec-reverse-continue
mi_create_breakpoint "-t basics.c:$line_callee3_head" \
3 del callee3 ".*basics.c" $line_callee3_head $hex \
"insert temp breakpoint at basics.c:$line_callee3_head"
mi_execute_to "exec-continue --reverse" \
"breakpoint-hit" "callee3" \
"\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
"basics.c" "\[0-9\]+" \
{ "" "disp=\"del\""} \
"reverse-continue at callee3"
mi_execute_to "exec-continue --reverse" \
"" "main" "" \
"basics.c" $line_main_body "" \
"reverse-continue at main"
}
test_controlled_execution_reverse
mi_gdb_exit
return 0
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: GDB MI Reverse Commands added [3 of 3]
2009-12-15 19:42 ` Michael Snyder
@ 2009-12-16 8:06 ` Vladimir Prus
2009-12-16 8:48 ` Jakob Engblom
0 siblings, 1 reply; 20+ messages in thread
From: Vladimir Prus @ 2009-12-16 8:06 UTC (permalink / raw)
To: Michael Snyder; +Cc: Jakob Engblom, gdb-patches
On Tuesday 15 December 2009 22:40:09 Michael Snyder wrote:
> Jakob Engblom wrote:
> > Final part: the test suite for gdb-MI reverse debugging commands. Attached as a
> > file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/
> >
> > Best regards,
> >
> > /jakob
>
> Part 3, test suite.
I do not have any further comments relative to those in:
http://article.gmane.org/gmane.comp.gdb.patches/51523/
It does not seem like any of them were addressed. When they are addressed,
this patch is OK. Because the only non-mechanical change is replacement of
FIXME with a suitable comment, and reverse-mode experts are in much better
position to decide if a comment captures the behaviour properly, I don't
think I have to re-review any revision of this patch -- please commit directly
when you think it's ready.
- Volodya
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: GDB MI Reverse Commands added [3 of 3]
2009-12-16 8:06 ` Vladimir Prus
@ 2009-12-16 8:48 ` Jakob Engblom
2009-12-16 10:05 ` Vladimir Prus
0 siblings, 1 reply; 20+ messages in thread
From: Jakob Engblom @ 2009-12-16 8:48 UTC (permalink / raw)
To: 'Vladimir Prus', 'Michael Snyder'; +Cc: gdb-patches
> It does not seem like any of them were addressed. When they are addressed,
> this patch is OK. Because the only non-mechanical change is replacement of
> FIXME with a suitable comment, and reverse-mode experts are in much better
> position to decide if a comment captures the behaviour properly, I don't
> think I have to re-review any revision of this patch -- please commit directly
> when you think it's ready.
I think they are. The latest file that Michael Snyder attached:
* Is called "mi-reverse.exp"
* Does use set MIFLAGS "-i=mi"
* And the FIXME comment has been replaced with a better comment:
# Test exec-reverse-next
# It takes two steps to get back to the previous line,
# as the first step moves us to the start of the current line,
# and the one after that moves back to the previous line.
mi_execute_to "exec-next --reverse 2" \
"end-stepping-range" "main" "" \
"basics.c" $line_main_hello "" \
"reverse next to get over the call to do_nothing"
So it looks to me like all the comments have been addressed, in the patch in the
email at http://sourceware.org/ml/gdb-patches/2009-12/msg00199.html .
Best regards,
/jakob
_______________________________________________________
Jakob Engblom, PhD, Technical Marketing Manager
Virtutech Direct: +46 8 690 07 47
Drottningholmsvägen 22 Mobile: +46 709 242 646
11243 Stockholm Web: www.virtutech.com
Sweden
________________________________________________________
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: GDB MI Reverse Commands added [3 of 3]
2009-12-16 8:48 ` Jakob Engblom
@ 2009-12-16 10:05 ` Vladimir Prus
2010-02-12 21:39 ` Michael Snyder
0 siblings, 1 reply; 20+ messages in thread
From: Vladimir Prus @ 2009-12-16 10:05 UTC (permalink / raw)
To: gdb-patches
Jakob Engblom wrote:
>> It does not seem like any of them were addressed. When they are addressed,
>> this patch is OK. Because the only non-mechanical change is replacement of
>> FIXME with a suitable comment, and reverse-mode experts are in much better
>> position to decide if a comment captures the behaviour properly, I don't
>> think I have to re-review any revision of this patch -- please commit directly
>> when you think it's ready.
>
> I think they are. The latest file that Michael Snyder attached:
>
> * Is called "mi-reverse.exp"
Per Michael's last message, it seems that he just attached wrong file
when pinging, and this issue is now resolved.
- Volodya
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: GDB MI Reverse Commands added [3 of 3]
2009-12-16 10:05 ` Vladimir Prus
@ 2010-02-12 21:39 ` Michael Snyder
0 siblings, 0 replies; 20+ messages in thread
From: Michael Snyder @ 2010-02-12 21:39 UTC (permalink / raw)
To: Vladimir Prus; +Cc: gdb-patches
Vladimir Prus wrote:
> Jakob Engblom wrote:
>
>>> It does not seem like any of them were addressed. When they are addressed,
>>> this patch is OK. Because the only non-mechanical change is replacement of
>>> FIXME with a suitable comment, and reverse-mode experts are in much better
>>> position to decide if a comment captures the behaviour properly, I don't
>>> think I have to re-review any revision of this patch -- please commit directly
>>> when you think it's ready.
>> I think they are. The latest file that Michael Snyder attached:
>>
>> * Is called "mi-reverse.exp"
>
> Per Michael's last message, it seems that he just attached wrong file
> when pinging, and this issue is now resolved.
Committed.
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2010-02-12 21:39 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-26 15:10 GDB MI Reverse Commands added [3 of 3] Jakob Engblom
2009-08-27 1:43 ` Michael Snyder
2009-08-31 13:13 ` Jakob Engblom
2009-09-01 12:48 ` Jakob Engblom
2009-09-01 17:36 ` Tom Tromey
2009-09-07 1:18 ` Michael Snyder
2009-09-07 7:10 ` Jakob Engblom
2009-09-07 18:09 ` Joel Brobecker
2009-09-08 7:11 ` Jakob Engblom
2009-09-02 8:23 ` Vladimir Prus
2009-09-03 18:44 ` Jakob Engblom
2009-09-03 20:13 ` Michael Snyder
2009-09-07 1:44 ` Hui Zhu
2009-12-15 19:43 ` Michael Snyder
2009-12-16 9:59 ` Vladimir Prus
2009-12-15 19:42 ` Michael Snyder
2009-12-16 8:06 ` Vladimir Prus
2009-12-16 8:48 ` Jakob Engblom
2009-12-16 10:05 ` Vladimir Prus
2010-02-12 21:39 ` Michael Snyder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox