社区
汇编语言
帖子详情
关于MAP文件的小问题
幽幽浮浮
2012-10-11 06:36:36
同样的控制台HelloWorld程序,VC++6.0和VC++2010编译出来的MAP文件中,main函数的入口地址,用Windbg中下断点,VC++6.0的可以成功,VC++2010的地址总不成功。这是为什么呢?
VC++2010的编译器在链接时篡改了入口地址吗?有什么说法没?
...全文
165
7
打赏
收藏
关于MAP文件的小问题
同样的控制台HelloWorld程序,VC++6.0和VC++2010编译出来的MAP文件中,main函数的入口地址,用Windbg中下断点,VC++6.0的可以成功,VC++2010的地址总不成功。这是为什么呢? VC++2010的编译器在链接时篡改了入口地址吗?有什么说法没?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
幽幽浮浮
2012-10-15
打赏
举报
回复
经过确认,的确是/DynamicBase链接属性导致。改为NO,编译后的入口地址即可正常下断了。
Areslee
2012-10-13
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
是设置断点失败还是程序装载之后已经走过那个地址了?
---是设置端点失败。
因为我在vs环境中,调试执行,看到main函数的入口地址和MAP文件的地址就不同,每次都会变化。似乎随机映射的。
而调试执行看到的这个地址,在winDbg中下,就可以成功中断在main。
[/Quote]
这个你要看看你是不是在连接选项里设置了允许重定位
大熊猫侯佩
2012-10-13
打赏
举报
回复
编译器改main地址是有可能的,你断不到,看main地址是否变了
幽幽浮浮
2012-10-13
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
是设置断点失败还是程序装载之后已经走过那个地址了?
[/Quote]---是设置端点失败。
因为我在vs环境中,调试执行,看到main函数的入口地址和MAP文件的地址就不同,每次都会变化。似乎随机映射的。
而调试执行看到的这个地址,在winDbg中下,就可以成功中断在main。
Areslee
2012-10-12
打赏
举报
回复
是设置断点失败还是程序装载之后已经走过那个地址了?
幽幽浮浮
2012-10-12
打赏
举报
回复
vc2010编译的map文件部分内容:
Address Publics by Value Rva+Base Lib:Object
0000:00000000 ___safe_se_handler_table 00000000 <absolute>
0000:00000000 ___safe_se_handler_count 00000000 <absolute>
0000:00000000 ___ImageBase 00400000 <linker-defined>
0001:00000000 __enc$textbss$begin 00401000 <linker-defined>
0001:00010000 __enc$textbss$end 00411000 <linker-defined>
0002:000003b0 _main
004113b0
f VC_ConsoleDemo.obj
0002:0000040e _printf 0041140e f MSVCRTD:MSVCR100D.dll
0002:00000420 __RTC_CheckEsp 00411420 f MSVCRTD:_stack_.obj
0002:00000450 @_RTC_CheckStackVars@8 00411450 f MSVCRTD:_stack_.obj
0002:000004d0 @_RTC_AllocaHelper@12 004114d0 f MSVCRTD:_stack_.obj
0002:00000510 @_RTC_CheckStackVars2@12 00411510 f MSVCRTD:_stack_.obj
VC6.0编译的map文件部分内容:
Address Publics by Value Rva+Base Lib:Object
0001:00000010 _main
00401010
f DebugDemo.obj
0001:00000040 _printf 00401040 f LIBCD:printf.obj
0001:000000c0 __chkesp 004010c0 f LIBCD:chkesp.obj
0001:00000100 _mainCRTStartup 00401100 f LIBCD:crt0.obj
红色的就是bp不成功的地址,但蓝色的却可以。
Areslee
2012-10-11
打赏
举报
回复
会不会是manifest文件的问题?
关于_
map
文件
的全面解析
什么是
map
文件
? 简单的说:
map
文件
是通过编译器编译之后,集程序、数据及IO空间的一种映射
文件
。 很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析
map
文件
。通过
map
文件
可以知道函数大小...
map
文件
粗略分析
Map
文件
就是MCU程序的
Map
(地图)。 我们编写好的代码,通过编译链接一系列动作后,会生成一个elf格式的
文件
,从这个elf
文件
可以生成一个hex或者bin
文件
,以供烧录到MCU里面去运行,同时(可配置地)生成一个叫
Map
的...
Keil5----打开
map
文件
方法和
map
文件
解析
Keil5----打开
map
文件
方法和
map
文件
解析 一、打开
map
文件
方法 二、
map
文件
解析
map
文件
输出内容配置
map
文件
内容 1. 勾选 Cross Reference 生成 Section Cross References 2. 勾选 Unused Section Info 生成 ...
js.
map
文件
什么是source
map
文件
source
map
文件
是js
文件
压缩后,
文件
的变量名替换对应、变量所在位置等元信息数据
文件
,一般这种
文件
和min.js主
文件
放在同一个目录下。 比如压缩后原变量是
map
,压缩后通过变量替换规则可能会...
嵌入式
Map
文件
解析
什么是
map
文件
? 简单的说:
map
文件
是通过编译器编译之后,集程序、数据及IO空间的一种映射
文件
。 很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析
map
文件
。通过
map
文件
可以知道函数大小,...
汇编语言
21,453
社区成员
41,602
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章