首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试器如何获取命令的行数?

调试器如何获取命令的行数?
EN

Stack Overflow用户
提问于 2011-02-06 14:26:44
回答 2查看 458关注 0票数 0

我试图使用symgetlinefromaddr64获取我在堆栈遍历中收集的地址的行号,但似乎无法获取简单命令的地址或它们的行。

例如,如果我正在查看以下方法:

代码语言:javascript
复制
void Test(int g)
{
  g++;
  DoSomething(g);
  g--;
}

我将只得到"DoSomething“的行号,但我想要"g++”的行号等等。我认为这是可行的,因为调试器会这样做。我如何在windows上的c++中自己做呢?

EN

回答 2

Stack Overflow用户

发布于 2011-02-06 14:39:49

堆栈遍历将只检索存储在堆栈上的地址,这很大程度上意味着函数调用。如果你想要你的g++g--的地址,你需要使用堆栈遍历以外的方法来获取它们(例如,SymGetFileLineOffsets64)。如果您从栈道开始,并且拥有来自SymGetLineFromAddr64的信息,则可以使用SymGetLineNext64SymGetLinePrev64来获取有关周围线路的信息。

票数 0
EN

Stack Overflow用户

发布于 2011-02-06 15:07:11

唯一的方法是使用编译器生成的符号文件,就像microsoft visual studio编译器的*.pdb文件(pdb代表程序数据库)。这些文件包含编译步骤中使用的所有符号。即使对于发布版的编译,您也可以获得有关正在使用的符号的信息(有些符号可能已经过优化)。

主要缺点是这是高度依赖于编译器/特定于编译器的。例如,gcc可以在可执行文件或可执行文件中包括符号信息。其他编译器有其他格式...

你使用什么编译器(名称/版本)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4911968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档