在 Qt Creator 中,你可以使用调试器前端界面逐行单步或逐过程调试程序,设置断点 ,检查堆栈中的内容,查看局部或全局变量的值等等,这些和我们常见的调试器提供的功能并无二致。而上述的原生信息,Qt Creator 会以清晰、简明的方式展现给程序员,这将使得原 本令人生畏的调试工作变得简单而有趣。
除了像堆栈查看器、局部变量和观察器、寄存器查看器等这些主流 IDE 都会提供的功能 外,Qt Creator 还提供了许多的功能以帮助开发者提高效率。由于调试器前端对 Qt 的内部 机制了如指掌,所以当程序出现问题时,它能够明晰描述症状。
若程序中对堆栈设置如下:
A此堆栈段的段名为STACK
B此堆栈段共120个单元
C此堆栈段第一个变量的名称为size
D堆栈设置好后,堆栈指针SP指向栈底
正确答案:C
首先取得要查看的进程的ID;代码如下
DWORD YourProcessID;
//获得某一时刻系统的进程、堆(heap)、模块(module)或线程的快照信息
HANDLE Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 processListStr;
processListStrdwSize=sizeof(PROCESSENTRY32);
BOOL return_value;
return_value=Process32First(Snapshot,&processListStr);
//获得系统进程链表中第一个进程的信息
int i=0;//item index
while(return_value){
//判断进程名称是否和你要查找的进程名称相同
if(processListStrszExeFile == "yourWillWatchProcessName"){
//将进程ID存放起来
YourProcessID = processListStrth32ProcessID;
break;
}
//获得系统进程链表中下一个进程的信息
return_value=Process32Next(Snapshot,&processListStr);
}
获得进程的ID以后
在通过下面的这个函数来获取进程中的内存数据
BOOL WINAPI Toolhelp32ReadProcessMemory(
DWORD th32ProcessID, //进程ID
LPCVOID lpBaseAddress, //进程基地址
LPVOID lpBuffer, //缓冲区
SIZE_T cbRead, //Number of bytes to read from the specified process
SIZE_T lpNumberOfBytesRead // Number of bytes copied to the specified buffer If this parameter is NULL, it is ignored
);
上面这个函数的用法就看看MSDN吧!
以上就是关于creator调试时怎么查看完整堆栈信息全部的内容,包括:creator调试时怎么查看完整堆栈信息、若程序中对堆栈设置如下:、如何查看某个进程堆,栈中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)