【发布时间】:2016-01-02 22:30:00
【问题描述】:
我在 dosbox 中运行 Turbo C 和 windows 调试
我有这个 C 程序,它有两条主线,如您所见。 int a=5 然后一行显示a的地址,printf("address of a=%x",&a)
我运行它
好像告诉我a已经分配了fff4的地址
现在我想使用调试来希望在那个内存地址看到 5 的值
但是没有显示
如何在调试中看到它?
【问题讨论】:
-
一旦你的程序退出,任何对内存的临时更改都会有效地消失。您需要在程序运行时进行调试 - 在程序中设置断点,然后在断点处暂停时检查内存。
-
那是虚拟地址。每个过程都不同。
-
@PaulR , rohan, 那么是否可以编写一个以非临时方式写入 RAM 的 C 程序?
-
@barlop:在某些嵌入式环境中,您可能可以,但通常不会 - RAM 是临时的,而在大多数现代操作系统中,它无论如何都是虚拟内存空间,因此一旦您的进程消失,那么地址和内存内容没有意义。
-
您能否详细介绍一下您为什么要这样做?你的目标是什么 ?在一个真正的 dos 16 位环境中——你的目标是 turbo c——你可以在你的进程之外写入内存,并让这个更改在你的程序退出后继续存在。
标签: c windows debugging assembly turbo-c