centurystar898
驱动牛犊
驱动牛犊
  • 注册日期2003-07-12
  • 最后登录2003-07-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1241回复:8

如何在softice 中监视函数的参数

楼主#
更多 发布于:2003-07-14 22:44
程序如下
_inline void WINAPI GetValFromString(char *p ,int &Val)
{
Val = atoi(p);
return ;
}
void CMyTestDlg::OnButton1()
{
char sz[] = \"123\";
int Val;

GetValFromString(sz,Val);
}
我想在Release 版本下用SoftIce 监视GetValFromString的参数值
具体步骤如下
先用VC6编译成RELEASE 的Test.exe   后用Symbol load 载入test.exe 后translate 提示No Debug Info found
用Ctrl - D 调出SoftIce 设 BPX GetValFromString
按Ctrl - D 退出 执行特Test.exe 但没有中断,请问为何
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-07-14 23:00
晕。。。都说了No Debug Info,看汇编码吧。
VC就可以debug了,把release的也加上debug info。
centurystar898
驱动牛犊
驱动牛犊
  • 注册日期2003-07-12
  • 最后登录2003-07-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-14 23:07
我做的这个程序只是个例子
实际上我想监视的是没有
原码的程序,现在问题是
就此情况,我如何通过SoftIce
如何通过汇编码
监视函数的参数请就前面例子
给与指点

[编辑 -  7/14/03 by  centurystar898]

[编辑 -  7/14/03 by  centurystar898]
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-07-15 08:54
(1)你的程序一定是debug版
(2)装入.exe文件,生成符号文件
(3)在softice中用file xx.cpp选择文件
(4)F9设置断点

琢磨悟真知
ququ
驱动小牛
驱动小牛
  • 注册日期2001-07-02
  • 最后登录2007-12-26
  • 粉丝0
  • 关注0
  • 积分342分
  • 威望35点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-15 09:42
我做的这个程序只是个例子
实际上我想监视的是没有
原码的程序,现在问题是
就此情况,我如何通过SoftIce
如何通过汇编码
监视函数的参数请就前面例子
给与指点

[编辑 -  7/14/03 by  centurystar898]

[编辑 -  7/14/03 by  centurystar898]


在你的函数中加入汇编语句__asm{
int 3
}

然后调出sice,下命令I3HERE ON,
然后运行你的程序,断下后可以回追到你的参数
centurystar898
驱动牛犊
驱动牛犊
  • 注册日期2003-07-12
  • 最后登录2003-07-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-17 08:01
我的程序是Release 版本,我要监视
的是别人的程序,我想看别人的程序
的API函数调用的具体参数。所以上述
方法不可行。
yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-21 21:10
scsi
驱动中牛
驱动中牛
  • 注册日期2002-03-22
  • 最后登录2011-03-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望116点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-22 17:59
由于你跟踪的程序中不包含Debug信息(实际所有正式发布的程序都是Release版,而不是Debug版),所以Softice无法装载符号表,你设的中断ICE无法定位该汗水在内存中的地址,自然中断不了.
你可以先用静态反汇编,找到该函数入口偏移地址xxxxxxxx,Ice把程序载入后, bpx xxxxxxxx, 有可能截获. 否则只好在Ice里单步执行,自己判断.  
如果你在win95/98下,或者你希望跟踪的函数在dll里,我有其他办法.  
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-23 15:35
调不带Debug information的exe文件,
看它调了哪些API及API的参数是吧?
可以用BoundsChecker看。请参考截图。
助人乃快乐之本 有人给分就更快乐了 :-)
游客

返回顶部