【问题标题】:C++ objdump use and disassemblyC++ objdump 使用与反汇编
【发布时间】:2017-11-16 02:02:30
【问题描述】:

在 linux 服务器上,命令是

$ objdump -t exercise11 > symbol_table.txt

目的是找到程序中三个全局变量的内存地址和大小(以字节为单位)。 第二部分相当于

$ objdump -S exercise11 > 反汇编.txt

这里的目的是搜索文本文件并找到将值分配给变量的指令。

我的问题是我在本地机器上使用 Visual Studio 2017。我在 Visual Studio 命令提示符下,但要么我需要不同的东西,要么我误解了我在输出文件中阅读的内容。我也使用了 dumpbin 命令,但它似乎也没有产生正确的信息。您能否告诉我如何在 Visual Studio 中执行此操作以及如何找到我正在搜索的信息?

【问题讨论】:

  • “我也使用了 dumpbin 命令,但它似乎也没有产生正确的信息。”你是如何使用它的,结果是什么?
  • 看来 dumpbin 和 objdump 命令产生了相同的结果。我使用了诸如 -SYMBOLS 之类的修饰符以及与帮助函数一起列出的其他命令,但它们都没有为函数 doSomething() 生成内存地址或机器代码
  • 3 没有 cmets 否决票?现在我记得我为什么退出使用这个网站了。
  • Afaik,内存地址是在链接器组合所有目标文件时分配的。它们不在特定的 obj 文件中传递。
  • 我知道这在 linux 终端上的 netbeans 中有效,我已经做到了。我只是不知道如何在视觉工作室中做到这一点。

标签: c++ visual-studio-2017 memory-address disassembly objdump


【解决方案1】:

您可以转到项目的属性页。单击链接器。点击调试,有几个选项可以生成 Map 文件,可以让您查看变量的内存地址等。

0004:00000000 ?variable1@@3HA 00420000 Excercise11.obj

这个问题本身并不难,但是在 Visual Studio 而不是 NetBeans 中找到正确的选项是有问题的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2012-12-26
    • 2012-06-07
    • 1970-01-01
    • 2011-04-21
    相关资源
    最近更新 更多