阅读:1241回复:8
如何在softice 中监视函数的参数
程序如下
_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 但没有中断,请问为何 |
|
沙发#
发布于:2003-07-14 23:00
晕。。。都说了No Debug Info,看汇编码吧。
VC就可以debug了,把release的也加上debug info。 |
|
板凳#
发布于:2003-07-14 23:07
我做的这个程序只是个例子
实际上我想监视的是没有 原码的程序,现在问题是 就此情况,我如何通过SoftIce 如何通过汇编码 监视函数的参数请就前面例子 给与指点 [编辑 - 7/14/03 by centurystar898] [编辑 - 7/14/03 by centurystar898] |
|
地板#
发布于:2003-07-15 08:54
(1)你的程序一定是debug版
(2)装入.exe文件,生成符号文件 (3)在softice中用file xx.cpp选择文件 (4)F9设置断点 |
|
|
地下室#
发布于:2003-07-15 09:42
我做的这个程序只是个例子 在你的函数中加入汇编语句__asm{ int 3 } 然后调出sice,下命令I3HERE ON, 然后运行你的程序,断下后可以回追到你的参数 |
|
5楼#
发布于:2003-07-17 08:01
我的程序是Release 版本,我要监视
的是别人的程序,我想看别人的程序 的API函数调用的具体参数。所以上述 方法不可行。 |
|
6楼#
发布于:2003-07-21 21:10
|
|
7楼#
发布于:2003-07-22 17:59
由于你跟踪的程序中不包含Debug信息(实际所有正式发布的程序都是Release版,而不是Debug版),所以Softice无法装载符号表,你设的中断ICE无法定位该汗水在内存中的地址,自然中断不了.
你可以先用静态反汇编,找到该函数入口偏移地址xxxxxxxx,Ice把程序载入后, bpx xxxxxxxx, 有可能截获. 否则只好在Ice里单步执行,自己判断. 如果你在win95/98下,或者你希望跟踪的函数在dll里,我有其他办法. |
|
8楼#
发布于:2003-07-23 15:35
调不带Debug information的exe文件,
看它调了哪些API及API的参数是吧? 可以用BoundsChecker看。请参考截图。 |
|
|