Edit inactive breakpoint
This commit is contained in:
		
							parent
							
								
									c2f999c6ea
								
							
						
					
					
						commit
						58825d4522
					
				| 
						 | 
					@ -585,7 +585,7 @@ void BreakpointsView::removeBreakpointSlot()
 | 
				
			||||||
            if(bp.active)
 | 
					            if(bp.active)
 | 
				
			||||||
                Breakpoints::removeBP(bp);
 | 
					                Breakpoints::removeBP(bp);
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                DbgCmdExec(QString("bc \"%1\":$%2").arg(bp.mod).arg(ToHexString(bp.addr)));
 | 
					                DbgCmdExec(QString().sprintf("bc \"%s\":$%X", bp.mod, bp.addr));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -601,7 +601,7 @@ void BreakpointsView::editBreakpointSlot()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if(!isValidBp())
 | 
					    if(!isValidBp())
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    auto & bp = selectedBp();
 | 
					    const BRIDGEBP & bp = selectedBp();
 | 
				
			||||||
    if(bp.type == bp_dll)
 | 
					    if(bp.type == bp_dll)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Breakpoints::editBP(bp_dll, bp.mod, this);
 | 
					        Breakpoints::editBP(bp_dll, bp.mod, this);
 | 
				
			||||||
| 
						 | 
					@ -609,7 +609,60 @@ void BreakpointsView::editBreakpointSlot()
 | 
				
			||||||
    else if(bp.active || bp.type == bp_exception)
 | 
					    else if(bp.active || bp.type == bp_exception)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Breakpoints::editBP(bp.type, ToPtrString(bp.addr), this);
 | 
					        Breakpoints::editBP(bp.type, ToPtrString(bp.addr), this);
 | 
				
			||||||
    } //TODO: edit inactive breakpoints
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        QString addrText = QString().sprintf("\"%s\":$%X", bp.mod, bp.addr);
 | 
				
			||||||
 | 
					        EditBreakpointDialog dialog(this, bp);
 | 
				
			||||||
 | 
					        if(dialog.exec() != QDialog::Accepted)
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        auto exec = [](const QString & command)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            DbgCmdExecDirect(command.toUtf8().constData());
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        const BRIDGEBP & newBp = dialog.getBp();
 | 
				
			||||||
 | 
					        switch(bp.type)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        case bp_normal:
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointName %1, \"%2\"").arg(addrText).arg(newBp.name));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointCondition %1, \"%2\"").arg(addrText).arg(newBp.breakCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointLog %1, \"%2\"").arg(addrText).arg(newBp.logText));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointLogCondition %1, \"%2\"").arg(addrText).arg(newBp.logCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointCommand %1, \"%2\"").arg(addrText).arg(newBp.commandText));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointCommandCondition %1, \"%2\"").arg(addrText).arg(newBp.commandCondition));
 | 
				
			||||||
 | 
					            exec(QString("ResetBreakpointHitCount %1, %2").arg(addrText).arg(ToPtrString(newBp.hitCount)));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointFastResume %1, %2").arg(addrText).arg(newBp.fastResume));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointSilent %1, %2").arg(addrText).arg(newBp.silent));
 | 
				
			||||||
 | 
					            exec(QString("SetBreakpointSingleshoot %1, %2").arg(addrText).arg(newBp.singleshoot));
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case bp_hardware:
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointName %1, \"%2\"").arg(addrText).arg(newBp.name));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointCondition %1, \"%2\"").arg(addrText).arg(newBp.breakCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointLog %1, \"%2\"").arg(addrText).arg(newBp.logText));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointLogCondition %1, \"%2\"").arg(addrText).arg(newBp.logCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointCommand %1, \"%2\"").arg(addrText).arg(newBp.commandText));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointCommandCondition %1, \"%2\"").arg(addrText).arg(newBp.commandCondition));
 | 
				
			||||||
 | 
					            exec(QString("ResetHardwareBreakpointHitCount %1, %2").arg(addrText).arg(ToPtrString(newBp.hitCount)));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointFastResume %1, %2").arg(addrText).arg(newBp.fastResume));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointSilent %1, %2").arg(addrText).arg(newBp.silent));
 | 
				
			||||||
 | 
					            exec(QString("SetHardwareBreakpointSingleshoot %1, %2").arg(addrText).arg(newBp.singleshoot));
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case bp_memory:
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointName %1, \"\"%2\"\"").arg(addrText).arg(newBp.name));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointCondition %1, \"%2\"").arg(addrText).arg(newBp.breakCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointLog %1, \"%2\"").arg(addrText).arg(newBp.logText));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointLogCondition %1, \"%2\"").arg(addrText).arg(newBp.logCondition));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointCommand %1, \"%2\"").arg(addrText).arg(newBp.commandText));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointCommandCondition %1, \"%2\"").arg(addrText).arg(newBp.commandCondition));
 | 
				
			||||||
 | 
					            exec(QString("ResetMemoryBreakpointHitCount %1, %2").arg(addrText).arg(ToPtrString(newBp.hitCount)));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointFastResume %1, %2").arg(addrText).arg(newBp.fastResume));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointSilent %1, %2").arg(addrText).arg(newBp.silent));
 | 
				
			||||||
 | 
					            exec(QString("SetMemoryBreakpointSingleshoot %1, %2").arg(addrText).arg(newBp.singleshoot));
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BreakpointsView::resetHitCountBreakpointSlot()
 | 
					void BreakpointsView::resetHitCountBreakpointSlot()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue