@@ -130,6 +130,10 @@ void CPUDump::setupContextMenu()
130
130
{
131
131
return (DbgGetBpxTypeAt (rvaToVa (getSelectionStart ())) & bp_memory) == 0 ;
132
132
});
133
+ MenuBuilder* wMemoryReadMenu = new MenuBuilder (this , [this ](QMenu*)
134
+ {
135
+ return (DbgGetBpxTypeAt (rvaToVa (getSelectionStart ())) & bp_memory) == 0 ;
136
+ });
133
137
MenuBuilder* wMemoryWriteMenu = new MenuBuilder (this , [this ](QMenu*)
134
138
{
135
139
return (DbgGetBpxTypeAt (rvaToVa (getSelectionStart ())) & bp_memory) == 0 ;
@@ -163,11 +167,14 @@ void CPUDump::setupContextMenu()
163
167
wBreakpointMenu->addSeparator ();
164
168
wMemoryAccessMenu->addAction (makeAction (DIcon (" breakpoint_memory_singleshoot.png" ), tr (" &Singleshoot" ), SLOT (memoryAccessSingleshootSlot ())));
165
169
wMemoryAccessMenu->addAction (makeAction (DIcon (" breakpoint_memory_restore_on_hit.png" ), tr (" &Restore on hit" ), SLOT (memoryAccessRestoreSlot ())));
170
+ wMemoryReadMenu->addAction (makeAction (DIcon (" breakpoint_memory_singleshoot.png" ), tr (" &Singleshoot" ), SLOT (memoryReadSingleshootSlot ())));
171
+ wMemoryReadMenu->addAction (makeAction (DIcon (" breakpoint_memory_restore_on_hit.png" ), tr (" &Restore on hit" ), SLOT (memoryReadRestoreSlot ())));
166
172
wMemoryWriteMenu->addAction (makeAction (DIcon (" breakpoint_memory_singleshoot.png" ), tr (" &Singleshoot" ), SLOT (memoryWriteSingleshootSlot ())));
167
173
wMemoryWriteMenu->addAction (makeAction (DIcon (" breakpoint_memory_restore_on_hit.png" ), tr (" &Restore on hit" ), SLOT (memoryWriteRestoreSlot ())));
168
174
wMemoryExecuteMenu->addAction (makeAction (DIcon (" breakpoint_memory_singleshoot.png" ), tr (" &Singleshoot" ), SLOT (memoryExecuteSingleshootSlot ())));
169
175
wMemoryExecuteMenu->addAction (makeAction (DIcon (" breakpoint_memory_restore_on_hit.png" ), tr (" &Restore on hit" ), SLOT (memoryExecuteRestoreSlot ())));
170
176
wBreakpointMenu->addMenu (makeMenu (DIcon (" breakpoint_memory_access.png" ), tr (" Memory, Access" )), wMemoryAccessMenu);
177
+ wBreakpointMenu->addMenu (makeMenu (DIcon (" breakpoint_memory_read.png" ), tr (" Memory, Read" )), wMemoryReadMenu);
171
178
wBreakpointMenu->addMenu (makeMenu (DIcon (" breakpoint_memory_write.png" ), tr (" Memory, Write" )), wMemoryWriteMenu);
172
179
wBreakpointMenu->addMenu (makeMenu (DIcon (" breakpoint_memory_execute.png" ), tr (" Memory, Execute" )), wMemoryExecuteMenu);
173
180
wBreakpointMenu->addAction (makeAction (DIcon (" breakpoint_remove.png" ), tr (" Remove &Memory" ), SLOT (memoryRemoveSlot ())), [this ](QMenu*)
@@ -1276,6 +1283,18 @@ void CPUDump::memoryAccessRestoreSlot()
1276
1283
DbgCmdExec (QString (" bpm " + addr_text + " , 1, a" ).toUtf8 ().constData ());
1277
1284
}
1278
1285
1286
+ void CPUDump::memoryReadSingleshootSlot ()
1287
+ {
1288
+ QString addr_text = ToPtrString (rvaToVa (getSelectionStart ()));
1289
+ DbgCmdExec (QString (" bpm " + addr_text + " , 0, r" ).toUtf8 ().constData ());
1290
+ }
1291
+
1292
+ void CPUDump::memoryReadRestoreSlot ()
1293
+ {
1294
+ QString addr_text = ToPtrString (rvaToVa (getSelectionStart ()));
1295
+ DbgCmdExec (QString (" bpm " + addr_text + " , 1, r" ).toUtf8 ().constData ());
1296
+ }
1297
+
1279
1298
void CPUDump::memoryWriteSingleshootSlot ()
1280
1299
{
1281
1300
QString addr_text = ToPtrString (rvaToVa (getSelectionStart ()));
0 commit comments