简单的调试目标程序

简单的调试目标程序

说明:

用于给OD调试使用的简单程序,只有一个TextEdit和两个Button. Textedit显示数值,两个Button分别实现增加和减少数值功能.经过测试,采用不同的数据存储方式,调试时的会出现直接地址和多级指针两种情况.

主要步骤:
  • 创建MFC对话框应用程序(VS2010)
  1. 新建项目 -> Visual C++ -> MFC-> MFC应用程序(对话框应用程序)
  2. 添加一个Edit Control和两个Button,分别全名为IDC_Edit1, IDC_Button_Inc, IDC_Button_Dec.
  • 采用不同的方法实现功能.

方法1:
添加控件变量m_EditValue关联IDC_Edit1: 类别Value, 变量类型int, 最小值0, 最大值1000.

BOOL CTest1Dlg::OnInitDialog()
{
    ...
    this->m_EditValue = 100;
    this->UpdateData(false);
    ...
}

void CTest1Dlg::OnBnClickedButtonInc()
{
    // TODO: 在此添加控件通知处理程序代码
    this->m_EditValue ++;
    this->UpdateData(false);
}


void CTest1Dlg::OnBnClickedButtonDec()
{
    // TODO: 在此添加控件通知处理程序代码
    this->m_EditValue --;
    this->UpdateData(false);
}

方法2:
添加控件变量如方法1. 声明全局变量 G_Value .

int G_Value = 100;
BOOL CTest1Dlg::OnInitDialog()
{
    ...
    this->m_EditValue = G_Value;
    this->UpdateData(false);
    ...
}

void CTest1Dlg::OnBnClickedButtonInc()
{
    // TODO: 在此添加控件通知处理程序代码
    G_Value ++;
    this->m_EditValue = G_Value;
    this->UpdateData(false);
}


void CTest1Dlg::OnBnClickedButtonDec()
{
    // TODO: 在此添加控件通知处理程序代码
    G_Value --;
    this->m_EditValue = G_Value;
    this->UpdateData(false);
}
  • 调试结果

采用方法1生成文件后用CE扫描, 三级以上指针(未找到最后). 因为目标值存放在类的结构中, 需要根据类的定义和实例存放位置确定目标值的地址, 所以是多级指针.

采用方法2生成文件后用CE扫描, 首次扫描即可得到两个结果, 其中一个就是目标地址(绿色). 所得目标地址为全局变量G_Value的地址, 非绿色的是控件值地址. 可以通过修改结果值的方法验证: 1只修改目标地址值后, Edit1控件值不变, 但按下BUTTON后, 会在修改的值基础上变化.(如修改为80, 则按增加按钮后为81.); 修改非绿值按下BUTTON后, 不会影响显示.

  • 建议用第二种方法生成文件作为调试目标
    原因 —— 简单.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值