1
0
Fork 0

DBG: UndecorateSymbolNames preference

This commit is contained in:
Mr. eXoDia 2014-03-28 16:27:26 +01:00
parent 7abe2e19b2
commit 0ef8c6e2c9
5 changed files with 43 additions and 14 deletions

View File

@ -84,7 +84,7 @@ extern "C" DLL_EXPORT bool _dbg_isdebugging()
extern "C" DLL_EXPORT bool _dbg_isjumpgoingtoexecute(duint addr)
{
static unsigned int cacheFlags;
static uint cacheFlags;
static uint cacheAddr;
static bool cacheResult;
if(cacheAddr!=addr or cacheFlags!=GetContextData(UE_EFLAGS))
@ -123,8 +123,7 @@ extern "C" DLL_EXPORT bool _dbg_addrinfoget(duint addr, SEGMENTREG segment, ADDR
pSymbol->MaxNameLen = MAX_LABEL_SIZE;
if(SymFromAddr(fdProcessInfo->hProcess, (DWORD64)addr, &displacement, pSymbol) and !displacement)
{
//TODO: user preference
if(!UnDecorateSymbolName(pSymbol->Name, addrinfo->label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
if(settingboolget("Engine", "UndecorateSymbolNames") or !UnDecorateSymbolName(pSymbol->Name, addrinfo->label, MAX_LABEL_SIZE, UNDNAME_COMPLETE))
strcpy(addrinfo->label, pSymbol->Name);
retval=true;
}

View File

@ -2,7 +2,7 @@
#include "debugger.h"
#include "addrinfo.h"
static struct SYMBOLCBDATA
struct SYMBOLCBDATA
{
CBSYMBOLENUM cbSymbolEnum;
void* user;
@ -98,8 +98,7 @@ const char* symgetsymbolicname(uint addr)
pSymbol->MaxNameLen = MAX_LABEL_SIZE;
if(SymFromAddr(fdProcessInfo->hProcess, (DWORD64)addr, &displacement, pSymbol) and !displacement)
{
//TODO: user preference
if(!UnDecorateSymbolName(pSymbol->Name, label, MAX_SYM_NAME, UNDNAME_COMPLETE))
if(!settingboolget("Engine", "UndecorateSymbolNames") or !UnDecorateSymbolName(pSymbol->Name, label, MAX_SYM_NAME, UNDNAME_COMPLETE))
strcpy(label, pSymbol->Name);
retval=true;
}

View File

@ -46,6 +46,7 @@ void SettingsDialog::LoadSettings()
settings.eventEntryBreakpoint=true;
settings.engineCalcType=calc_unsigned;
settings.engineBreakpointType=break_int3short;
settings.engineUndecorateSymbolNames=true;
settings.exceptionRanges=&realExceptionRanges;
//Events tab
@ -93,6 +94,7 @@ void SettingsDialog::LoadSettings()
break;
}
}
GetSettingBool("Engine", "UndecorateSymbolNames", &settings.engineUndecorateSymbolNames);
switch(settings.engineCalcType)
{
case calc_signed:
@ -114,6 +116,7 @@ void SettingsDialog::LoadSettings()
ui->radioUd2->setChecked(true);
break;
}
ui->chkUndecorateSymbolNames->setChecked(settings.engineUndecorateSymbolNames);
//Exceptions tab
char exceptionRange[MAX_SETTING_SIZE]="";
@ -152,6 +155,7 @@ void SettingsDialog::SaveSettings()
//Engine tab
BridgeSettingSetUint("Engine", "CalculationType", settings.engineCalcType);
BridgeSettingSetUint("Engine", "BreakpointType", settings.engineBreakpointType);
BridgeSettingSetUint("Engine", "UndecorateSymbolNames", settings.engineUndecorateSymbolNames);
//Exceptions tab
QString exceptionRange="";
@ -192,6 +196,16 @@ void SettingsDialog::AddRangeToList(RangeStruct range)
ui->listExceptions->addItem(QString().sprintf("%.8X-%.8X", settings.exceptionRanges->at(i).start, settings.exceptionRanges->at(i).end));
}
void SettingsDialog::on_btnSave_clicked()
{
SaveSettings();
QMessageBox msg(QMessageBox::Information, "Information", "Settings saved!");
msg.setWindowIcon(QIcon(":/icons/images/information.png"));
msg.setParent(this, Qt::Dialog);
msg.setWindowFlags(msg.windowFlags()&(~Qt::WindowContextHelpButtonHint));
msg.exec();
}
void SettingsDialog::on_chkSystemBreakpoint_stateChanged(int arg1)
{
if(arg1==Qt::Unchecked)
@ -297,14 +311,12 @@ void SettingsDialog::on_radioUd2_clicked()
settings.engineBreakpointType=break_ud2;
}
void SettingsDialog::on_btnSave_clicked()
void SettingsDialog::on_chkUndecorateSymbolNames_stateChanged(int arg1)
{
SaveSettings();
QMessageBox msg(QMessageBox::Information, "Information", "Settings saved!");
msg.setWindowIcon(QIcon(":/icons/images/information.png"));
msg.setParent(this, Qt::Dialog);
msg.setWindowFlags(msg.windowFlags()&(~Qt::WindowContextHelpButtonHint));
msg.exec();
if(arg1==Qt::Unchecked)
settings.engineUndecorateSymbolNames=false;
else
settings.engineUndecorateSymbolNames=true;
}
void SettingsDialog::on_btnAddRange_clicked()

View File

@ -19,6 +19,9 @@ public:
void SaveSettings();
private slots:
//General
void on_btnSave_clicked();
//Event tab
void on_chkSystemBreakpoint_stateChanged(int arg1);
void on_chkTlsCallbacks_stateChanged(int arg1);
void on_chkEntryBreakpoint_stateChanged(int arg1);
@ -29,12 +32,14 @@ private slots:
void on_chkThreadStart_stateChanged(int arg1);
void on_chkThreadEnd_stateChanged(int arg1);
void on_chkDebugStrings_stateChanged(int arg1);
//Engine tab
void on_radioUnsigned_clicked();
void on_radioSigned_clicked();
void on_radioInt3Short_clicked();
void on_radioInt3Long_clicked();
void on_radioUd2_clicked();
void on_btnSave_clicked();
void on_chkUndecorateSymbolNames_stateChanged(int arg1);
//Exception tab
void on_btnAddRange_clicked();
void on_btnDeleteRange_clicked();
void on_btnAddLast_clicked();
@ -85,6 +90,7 @@ private:
//Engine Tab
CalcType engineCalcType;
BreakpointType engineBreakpointType;
bool engineUndecorateSymbolNames;
//Exception Tab
QList<RangeStruct>* exceptionRanges;
};

View File

@ -293,6 +293,19 @@
</item>
</layout>
</widget>
<widget class="QCheckBox" name="chkUndecorateSymbolNames">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>151</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Undecorate Symbol Names</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tabExceptions">
<attribute name="title">