怎么查看c语言程序运行过程

怎么查看c语言程序运行过程,第1张

用单步执行,VC下面是

按键F10 就是键盘上面最上面一行的F数字按键·~~~~

进行一步一步的执行,下面的窗口可以设定跟踪变量

在TC里面则是

F7、F8进行单步执行(其中一个是跳过被调用函数,好像是F8)

按键Ctrl+F7组合可以加入跟踪变量的结果显示~~~~

其他编译器一般没有支持调试的,再次就不说了·~~~~

void

sum(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) )

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12207726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存