进行一步一步的执行,下面的窗口可以设定跟踪变量
在TC里面则是
F7、F8进行单步执行(其中一个是跳过被调用函数,好像是F8)
按键Ctrl+F7组合可以加入跟踪变量的结果显示~~~~
其他编译器一般没有支持调试的,再次就不说了·~~~~
voidsum(int
*a)
{ a[0]=a[1]}
a为指针数组,a[0]可以就是指针当前所指的地址,a[1]就是指针指向的下一地址
然后再看for(i=2i>=0i--) sum(&aa[i])很明显三次 *** 作如下:
i=2:aa[2]=aa[3]
i=1:aa[1]=aa[2]
i=0:aa[0]=aa[1]
明显aa[3]=4,故最后aa[0]为4!
满意么?
呵呵
#include<windows.h>#include <stdio.h>
#include "PSAPI.H"
#pragma comment( lib, "PSAPI.LIB" )
BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)
int main(void)
{
DWORD processid[1024],needed,processcount,i
HANDLE hProcess
HMODULE hModule
char path[MAX_PATH] = "",temp[256]
HANDLE hToken
printf("ShowProcessPath 2.0 with [Process Status API]\n\n")
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
if (EnablePrivilege(hToken,SE_DEBUG_NAME))
{
EnumProcesses(processid, sizeof(processid), &needed)
processcount=needed/sizeof(DWORD)
for (i=0i<processcounti++)
{
hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i])
if (hProcess)
{
EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed)
GetModuleFileNameEx(hProcess, hModule, path, sizeof(path))
>>>>在这里判断是否是你所需要的文件
GetShortPathName(path,path,256)
itoa(processid[i],temp,10)
printf("%s --- %s\n",path,temp)
}
else
printf("Failed!!!\n")
}
}
}
CloseHandle(hProcess)
CloseHandle(hModule)
itoa(processcount,temp,10)
printf("\nProcess Count:%s\n\n",temp)
return 0
}
BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)
{
TOKEN_PRIVILEGES tkp
LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges[0].Luid )//修改进程权限
tkp.PrivilegeCount=1
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL )//通知系统修改进程权限
return( (GetLastError()==ERROR_SUCCESS) )
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)