DBG: more expression functions
This commit is contained in:
parent
e0497818c0
commit
4657786726
|
@ -1,6 +1,7 @@
|
|||
#include "expressionfunctions.h"
|
||||
#include "threading.h"
|
||||
#include "exprfunc.h"
|
||||
#include "module.h"
|
||||
|
||||
std::unordered_map<String, ExpressionFunctions::Function> ExpressionFunctions::mFunctions;
|
||||
|
||||
|
@ -38,7 +39,14 @@ void ExpressionFunctions::Init()
|
|||
using namespace Exprfunc;
|
||||
|
||||
//undocumented
|
||||
RegisterEasy("srcline", srcline);
|
||||
RegisterEasy("src.line", srcline);
|
||||
RegisterEasy("src.disp", srcdisp);
|
||||
|
||||
RegisterEasy("mod.party", modparty);
|
||||
RegisterEasy("mod.base", ModBaseFromAddr);
|
||||
RegisterEasy("mod.size", ModSizeFromAddr);
|
||||
RegisterEasy("mod.hash", ModHashFromAddr);
|
||||
RegisterEasy("mod.entry", ModEntryFromAddr);
|
||||
}
|
||||
|
||||
bool ExpressionFunctions::Register(const String & name, int argc, CBEXPRESSIONFUNCTION cbFunction)
|
||||
|
|
|
@ -1,14 +1,27 @@
|
|||
#include "exprfunc.h"
|
||||
#include "symbolinfo.h"
|
||||
#include "module.h"
|
||||
|
||||
namespace Exprfunc
|
||||
{
|
||||
duint srcline(duint addr)
|
||||
{
|
||||
int line = 0;
|
||||
DWORD displacement = 0;
|
||||
if(!SymGetSourceLine(addr, nullptr, &line, &displacement) || displacement)
|
||||
if(!SymGetSourceLine(addr, nullptr, &line, nullptr))
|
||||
return 0;
|
||||
return line;
|
||||
}
|
||||
}
|
||||
|
||||
duint srcdisp(duint addr)
|
||||
{
|
||||
DWORD disp;
|
||||
if(!SymGetSourceLine(addr, nullptr, nullptr, &disp))
|
||||
return 0;
|
||||
return disp;
|
||||
}
|
||||
|
||||
duint modparty(duint addr)
|
||||
{
|
||||
return ModGetParty(addr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,4 +5,7 @@
|
|||
namespace Exprfunc
|
||||
{
|
||||
duint srcline(duint addr);
|
||||
duint srcdisp(duint addr);
|
||||
|
||||
duint modparty(duint addr);
|
||||
}
|
|
@ -1538,10 +1538,10 @@ void MainWindow::clickFavouriteTool()
|
|||
|
||||
void MainWindow::on_actionStepIntoSource_triggered()
|
||||
{
|
||||
DbgCmdExec("TraceIntoConditional srcline(cip)");
|
||||
DbgCmdExec("TraceIntoConditional src.line(cip) && !src.disp(cip)");
|
||||
}
|
||||
|
||||
void MainWindow::on_actionStepOverSource_triggered()
|
||||
{
|
||||
DbgCmdExec("TraceOverConditional srcline(cip)");
|
||||
DbgCmdExec("TraceOverConditional src.line(cip) && !src.disp(cip)");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue