| ²é¿´: 346 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
½öͨ¹ý±ÀÀ£µØÖ·ÕÒ³öÔ´´úÂëµÄ³ö´íÐÐ[תÌù]
|
||
|
×÷Ϊ³ÌÐòÔ±£¬ÎÒÃÇÆ½Ê±×îµ£Ðļûµ½µÄÊÂÇéÊÇʲô£¿ÊÇÄÚ´æÐ¹Â©£¿ÊǽçÃæ²»ºÃ¿´£¿¡¡´íÀ²£¡ÎÒÏàÐÅÎҵĿ´·¨ÊDz»»áÓÐÈË·´¶ÔµÄ¡ª¡ªÄǾÍÊÇ£¬³ÌÐò·¢ÉúÁ˱ÀÀ££¡ ¡°¸Ã³ÌÐòÖ´ÐÐÁË·Ç·¨²Ù×÷£¬¼´½«¹Ø±Õ¡£ÇëÓëÄãµÄÈí¼þ¹©Ó¦ÉÌÁªÏµ¡£¡±£¬ºÇºÇ£¬Õâ¾ä M$ µÄ¡°ÃûÑÔ¡±£¬¿ÖžÍÊdzÌÐòÔ±×îµ£Ðļûµ½µÄ¶«Î÷ÁË¡£ÓеÄʱºò£¬×Ô¼ºµÄ³ÌÐòÔÚ×Ô¼ºµÄ»úÆ÷ÉÏÔËÐеúúõ쬵«Êǵ½Á˱ðÈ˵ĻúÆ÷ÉϾͱÀÀ£ÁË£»ÓÐʱ×Ô¼ºÔÚ±àдºÍ²âÊԵĹý³ÌÖоÍĪÃûÆäÃîµØÓöµ½ÁË·Ç·¨²Ù×÷£¬µ«ÊÇÈ´ÎÞ·¨È·¶¨µ½µ×ÊÇÔ´´úÂëÖеÄÄÄÐÐÒýÆðµÄ¡¡ÊDz»ÊǺÜÍ´¿àÄØ£¿²»Òª½ô£¬±¾ÎÄ¿ÉÒÔ°ïÖúÄã×ß³öÕâÖÖÀ§¾³£¬ÉõÖÁÄã´Ó´ËÖ®ºó¿ÉÒÔ×ÔºÀµØÒªÇóÓû§°Ñ±ÀÀ£µØÖ·¸æËßÄ㣬ȻºóÄã¾Í¿ÉÒÔ¾«È·µØ¶¨Î»µ½Ô´´úÂëÖгö´íµÄÄÇÐÐÁË¡££¨ºÜÉñÆæ°É£¿ºÇºÇ¡££© Ê×ÏÈÎÒ±ØÐëÇ¿µ÷µÄÊÇ£¬±¾·½·¨¿ÉÒÔÔÚĿǰÊÐÃæÉÏÈÎÒâÒ»¿î±àÒëÆ÷ÉÏÃæÊ¹Óᣵ«ÊÇÎÒÖ»ÊìϤ M$ µÄ VC ºÍ MASM £¬Òò´ËºóÃæµÄ²¿·ÖÖ»½éÉÜÈçºÎÔÚÕâÁ½¸ö±àÒëÆ÷ÖÐʵÏÖ£¬Çë¶ÁÕß×ÔÐÐÈÚ»á¹áͨ£¬ÕÆÎÕÔÚ±ðµÄ±àÒëÆ÷ÉÏʹÓõķ½·¨¡£ Well£¬·Ï»°ËµÍêÁË£¬ÈÃÎÒÃÇ¿ªÊ¼£¡ £º£© Ê×ÏȱØÐëÉú³É³ÌÐòµÄ MAP Îļþ¡£Ê²Ã´ÊÇ MAP Îļþ£¿¼òµ¥µØ½²£¬ MAP ÎļþÊdzÌÐòµÄÈ«¾Ö·ûºÅ¡¢Ô´ÎļþºÍ´úÂëÐкÅÐÅÏ¢µÄΨһµÄÎı¾±íʾ·½·¨£¬Ëü¿ÉÒÔÔÚÈκεط½¡¢ÈκÎʱºòʹÓ㬲»ÐèÒªÓжîÍâµÄ³ÌÐò½øÐÐÖ§³Ö¡£¶øÇÒ£¬ÕâÊÇΨһÄÜÕÒ³ö³ÌÐò±ÀÀ£µÄµØ·½µÄ¾ÈÐÇ¡£ ºÃ°É£¬¼ÈÈ» MAP ÎļþÈç´ËÉñÆæ£¬ÄÇôÎÒÃÇÓ¦¸ÃÈçºÎÉú³ÉËüÄØ£¿ÔÚ VC ÖУ¬ÎÒÃÇ¿ÉÒÔ°´Ï Alt+F7 £¬´ò¿ª¡°Project Settings¡±Ñ¡ÏîÒ³£¬Ñ¡Ôñ C/C++ Ñ¡Ï£¬²¢ÔÚ×îÏÂÃæµÄ Project Options ÀïÃæÊäÈ룺/Zd £¬È»ºóҪѡÔñ Link Ñ¡Ï£¬ÔÚ×îÏÂÃæµÄ Project Options ÀïÃæÊäÈ룺 /mapinfo:lines ºÍ /map ROJECT_NAME.map ¡£×îºó°´Ï F7 À´±àÒëÉú³É EXE ¿ÉÖ´ÐÐÎļþºÍ MAP Îļþ¡£ÔÚ MASM ÖУ¬ÎÒÃÇÒªÉèÖñàÒëºÍÁ¬½Ó²ÎÊý£¬ÎÒͨ³£ÊÇÕâÑù×öµÄ£º rc %1.rc ml /c /coff /Zd %1.asm link /subsystem:windows /mapinfo:exports /mapinfo:lines /map:%1.map %1.obj %1.res °ÑËü±£´æ³É makem.bat £¬¾Í¿ÉÒÔÔÚÃüÁîÐÐÊäÈë makem filename À´±àÒëÉú³É EXE ¿ÉÖ´ÐÐÎļþºÍ MAP ÎļþÁË¡£ ÔÚ´ËÎÒÏȽâÊÍһϼÓÈëµÄ²ÎÊýµÄº¬Ò壺 /Zd ±íʾÔÚ±àÒëµÄʱºòÉú³ÉÐÐÐÅÏ¢ /map[:filename] ±íʾÉú³É MAP ÎļþµÄ·¾¶ºÍÎļþÃû /mapinfo:lines ±íʾÉú³É MAP Îļþʱ£¬¼ÓÈëÐÐÐÅÏ¢ /mapinfo:exports ±íʾÉú³É MAP Îļþʱ£¬¼ÓÈë exported functions £¨Èç¹ûÉú³ÉµÄÊÇ DLL Îļþ£¬Õâ¸öÑ¡Ïî¾ÍÒª¼ÓÉÏ£© OK£¬Í¨¹ýÉÏÃæµÄ²½Ö裬ÎÒÃÇÒѾµÃµ½ÁË MAP Îļþ£¬ÄÇôÎÒÃǸÃÈçºÎÀûÓÃËüÄØ£¿ ÈÃÎÒÃÇ´Ó¼òµ¥µÄʵÀýÈëÊÖ£¬Çë´ò¿ªÄãµÄ VC £¬Ð½¨ÕâÑùÒ»¸öÎļþ£º 01 //**************************************************************** 02 //³ÌÐòÃû³Æ£ºÑÝʾÈçºÎͨ¹ý±ÀÀ£µØÖ·ÕÒ³öÔ´´úÂëµÄ³ö´íÐÐ 03 //×÷ÕߣºÂÞ´Ï 04 //ÈÕÆÚ£º2003-2-7 05 //³ö´¦£ºhttp://www.luocong.com/£¨ÀÏÂÞµÄçÍ·×ÌìµØ£© 06 //±¾³ÌÐò»á²úÉú¡°³ý0´íÎó¡±£¬ÒÔÖÁÓڻᵯ³ö¡°·Ç·¨²Ù×÷¡±¶Ô»°¿ò¡£ 07 //¡°³ý0´íÎó¡±Ö»»áÔÚ Debug °æ±¾Ï²úÉú£¬±¾³ÌÐòΪÁËÑÝʾ¶ø¾¡Á¿¼ò»¯¡£ 08 //×¢ÒâÊÂÏÈçÓû×ªÔØ£¬Çë±£³Ö±¾³ÌÐòµÄÍêÕû£¬²¢×¢Ã÷£º 09 //×ªÔØ×Ô¡°ÀÏÂÞµÄçÍ·×ÌìµØ¡±£¨http://www.luocong.com/£© 10 //**************************************************************** 11 12 void Crash(void) 13 { 14 int i = 1; 15 int j = 0; 16 i /= j; 17 } 18 19 void main(void) 20 { 21 Crash(); 22 } ºÜÏÔÈ»±¾³ÌÐòÓС°³ý0´íÎó¡±£¬ÔÚ Debug ·½Ê½Ï±àÒëµÄ»°£¬ÔËÐÐʱ¿Ï¶¨»á²úÉú¡°·Ç·¨²Ù×÷¡±¡£ºÃ£¬ÈÃÎÒÃÇÔËÐÐËü£¬¹ûÈ»£¬¡°·Ç·¨²Ù×÷¡±¶Ô»°¿ò³öÏÖÁË£¬ÕâʱÎÒÃǵã»÷¡°ÏêϸÐÅÏ¢¡±°´Å¥£¬¼Ç¼Ï²úÉú±ÀÀ£µÄµØÖ·¡ª¡ªÔÚÎҵĻúÆ÷ÉÏÊÇ 0x0040104a ¡£ ÔÙ¿´¿´ËüµÄ MAP Îļþ£º£¨ÓÉÓÚÎļþÄÚÈÝÌ«³¤£¬ÖмäûÓõIJ¿·ÖÎÒ½øÐÐÁËÊ¡ÂÔ£© CrashDemo Timestamp is 3e430a76 (Fri Feb 07 09:23:02 2003) Preferred load address is 00400000 Start Length Name Class 0001:00000000 0000de04H .text CODE 0001:0000de04 0001000cH .textbss CODE 0002:00000000 00001346H .rdata DATA 0002:00001346 00000000H .edata DATA 0003:00000000 00000104H .CRT$XCA DATA 0003:00000104 00000104H .CRT$XCZ DATA 0003:00000208 00000104H .CRT$XIA DATA 0003:0000030c 00000109H .CRT$XIC DATA 0003:00000418 00000104H .CRT$XIZ DATA 0003:0000051c 00000104H .CRT$XPA DATA 0003:00000620 00000104H .CRT$XPX DATA 0003:00000724 00000104H .CRT$XPZ DATA 0003:00000828 00000104H .CRT$XTA DATA 0003:0000092c 00000104H .CRT$XTZ DATA 0003:00000a30 00000b93H .data DATA 0003:000015c4 00001974H .bss DATA 0004:00000000 00000014H .idata$2 DATA 0004:00000014 00000014H .idata$3 DATA 0004:00000028 00000110H .idata$4 DATA 0004:00000138 00000110H .idata$5 DATA 0004:00000248 000004afH .idata$6 DATA Address Publics by value Rva+Base Lib:Object 0001:00000020 ?Crash@@YAXXZ 00401020 f CrashDemo.obj 0001:00000070 _main 00401070 f CrashDemo.obj 0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 00424000 kernel32:KERNEL32.dll 0004:00000014 __NULL_IMPORT_DESCRIPTOR 00424014 kernel32:KERNEL32.dll 0004:00000138 __imp__GetCommandLineA@0 00424138 kernel32:KERNEL32.dll 0004:0000013c __imp__GetVersion@0 0042413c kernel32:KERNEL32.dll 0004:00000140 __imp__ExitProcess@4 00424140 kernel32:KERNEL32.dll 0004:00000144 __imp__DebugBreak@0 00424144 kernel32:KERNEL32.dll 0004:00000148 __imp__GetStdHandle@4 00424148 kernel32:KERNEL32.dll 0004:0000014c __imp__WriteFile@20 0042414c kernel32:KERNEL32.dll 0004:00000150 __imp__InterlockedDecrement@4 00424150 kernel32:KERNEL32.dll 0004:00000154 __imp__OutputDebugStringA@4 00424154 kernel32:KERNEL32.dll 0004:00000158 __imp__GetProcAddress@8 00424158 kernel32:KERNEL32.dll 0004:0000015c __imp__LoadLibraryA@4 0042415c kernel32:KERNEL32.dll 0004:00000160 __imp__InterlockedIncrement@4 00424160 kernel32:KERNEL32.dll 0004:00000164 __imp__GetModuleFileNameA@12 00424164 kernel32:KERNEL32.dll 0004:00000168 __imp__TerminateProcess@8 00424168 kernel32:KERNEL32.dll 0004:0000016c __imp__GetCurrentProcess@0 0042416c kernel32:KERNEL32.dll 0004:00000170 __imp__UnhandledExceptionFilter@4 00424170 kernel32:KERNEL32.dll 0004:00000174 __imp__FreeEnvironmentStringsA@4 00424174 kernel32:KERNEL32.dll 0004:00000178 __imp__FreeEnvironmentStringsW@4 00424178 kernel32:KERNEL32.dll 0004:0000017c __imp__WideCharToMultiByte@32 0042417c kernel32:KERNEL32.dll 0004:00000180 __imp__GetEnvironmentStrings@0 00424180 kernel32:KERNEL32.dll 0004:00000184 __imp__GetEnvironmentStringsW@0 00424184 kernel32:KERNEL32.dll 0004:00000188 __imp__SetHandleCount@4 00424188 kernel32:KERNEL32.dll 0004:0000018c __imp__GetFileType@4 0042418c kernel32:KERNEL32.dll 0004:00000190 __imp__GetStartupInfoA@4 00424190 kernel32:KERNEL32.dll 0004:00000194 __imp__HeapDestroy@4 00424194 kernel32:KERNEL32.dll 0004:00000198 __imp__HeapCreate@12 00424198 kernel32:KERNEL32.dll 0004:0000019c __imp__HeapFree@12 0042419c kernel32:KERNEL32.dll 0004:000001a0 __imp__VirtualFree@12 004241a0 kernel32:KERNEL32.dll 0004:000001a4 __imp__RtlUnwind@16 004241a4 kernel32:KERNEL32.dll 0004:000001a8 __imp__GetLastError@0 004241a8 kernel32:KERNEL32.dll 0004:000001ac __imp__SetConsoleCtrlHandler@8 004241ac kernel32:KERNEL32.dll 0004:000001b0 __imp__IsBadWritePtr@8 004241b0 kernel32:KERNEL32.dll 0004:000001b4 __imp__IsBadReadPtr@8 004241b4 kernel32:KERNEL32.dll 0004:000001b8 __imp__HeapValidate@12 004241b8 kernel32:KERNEL32.dll 0004:000001bc __imp__GetCPInfo@8 004241bc kernel32:KERNEL32.dll 0004:000001c0 __imp__GetACP@0 004241c0 kernel32:KERNEL32.dll 0004:000001c4 __imp__GetOEMCP@0 004241c4 kernel32:KERNEL32.dll 0004:000001c8 __imp__HeapAlloc@12 004241c8 kernel32:KERNEL32.dll 0004:000001cc __imp__VirtualAlloc@16 004241cc kernel32:KERNEL32.dll 0004:000001d0 __imp__HeapReAlloc@16 004241d0 kernel32:KERNEL32.dll 0004:000001d4 __imp__MultiByteToWideChar@24 004241d4 kernel32:KERNEL32.dll 0004:000001d8 __imp__LCMapStringA@24 004241d8 kernel32:KERNEL32.dll 0004:000001dc __imp__LCMapStringW@24 004241dc kernel32:KERNEL32.dll 0004:000001e0 __imp__GetStringTypeA@20 004241e0 kernel32:KERNEL32.dll 0004:000001e4 __imp__GetStringTypeW@16 004241e4 kernel32:KERNEL32.dll 0004:000001e8 __imp__SetFilePointer@16 004241e8 kernel32:KERNEL32.dll 0004:000001ec __imp__SetStdHandle@8 004241ec kernel32:KERNEL32.dll 0004:000001f0 __imp__FlushFileBuffers@4 004241f0 kernel32:KERNEL32.dll 0004:000001f4 __imp__CloseHandle@4 004241f4 kernel32:KERNEL32.dll 0004:000001f8 \177KERNEL32_NULL_THUNK_DATA 004241f8 kernel32:KERNEL32.dll entry point at 0001:000000f0 Line numbers for .\Debug\CrashDemo.obj(d:\msdev\myprojects\crashdemo\crashdemo.cpp) segment .text 13 0001:00000020 14 0001:00000038 15 0001:0000003f 16 0001:00000046 17 0001:00000050 20 0001:00000070 21 0001:00000088 22 0001:0000008d Èç¹û×Ðϸä¯ÀÀ Rva+Base ÕâÀ¸£¬Äã»á·¢ÏÖµÚÒ»¸ö±È±ÀÀ£µØÖ· 0x0040104a ´óµÄº¯ÊýµØÖ·ÊÇ 0x00401070 £¬ËùÒÔÔÚ 0x00401070 Õâ¸öµØÖ·Ö®Ç°µÄÄǸöÈë¿Ú¾ÍÊDzúÉú±ÀÀ£µÄº¯Êý£¬Ò²¾ÍÊÇÕâÐУº 0001:00000020 ?Crash@@YAXXZ 00401020 f CrashDemo.obj Òò´Ë£¬·¢Éú±ÀÀ£µÄº¯Êý¾ÍÊÇ ?Crash@@YAXXZ £¬ËùÓÐÒÔÎʺſªÍ·µÄº¯ÊýÃû³Æ¶¼ÊÇ C++ ÐÞÊεÄÃû³Æ¡£ÔÚÎÒÃǵÄÔ´³ÌÐòÖУ¬Ò²¾ÍÊÇ Crash() Õâ¸ö×Óº¯Êý¡£ OK£¬ÏÖÔÚÎÒÃÇÇá¶øÒ׾ٵرãÖªµÀÁË·¢Éú±ÀÀ£µÄº¯ÊýÃû³Æ£¬ÄãÊDz»ÊǺÜÐË·ÜÄØ£¿ºÇºÇ£¬Ïȱðæ£¬½ÓÏÂÀ´£¬¸üÀ÷º¦µÄÕÐÊýÒª³ö³¡ÁË¡£ Çë×¢Òâ MAP ÎļþµÄ×îºó²¿·Ö¡ª¡ª´úÂëÐÐÐÅÏ¢£¨Line numbers information£©£¬ËüÊÇÒÔÕâÑùµÄÐÎʽÏÔʾµÄ£º 13 0001:00000020 µÚÒ»¸öÊý×Ö´ú±íÔÚÔ´´úÂëÖеĴúÂëÐкţ¬µÚ¶þ¸öÊýÊǸôúÂëÐÐÔÚËùÊôµÄ´úÂë¶ÎÖÐµÄÆ«ÒÆÁ¿¡£ Èç¹ûÒª²éÕÒ´úÂëÐкţ¬ÐèҪʹÓÃÏÂÃæµÄ¹«Ê½×öһЩʮÁù½øÖƵļõ·¨ÔËË㣺 ±ÀÀ£ÐÐÆ«ÒÆ = ±ÀÀ£µØÖ·£¨Crash Address£© - »ùµØÖ·£¨ImageBase Address£© - 0x1000 ΪʲôҪÕâÑù×öÄØ£¿Ï¸ÐĵÄÅóÓÑ¿ÉÄÜ»áÁôÒâµ½ Rva+Base ÕâÀ¸ÁË£¬ÎÒÃǵõ½µÄ±ÀÀ£µØÖ·¶¼ÊÇÓÉ Æ«ÒÆµØÖ·£¨Rva£©+ »ùµØÖ·£¨Base£© µÃÀ´µÄ£¬ËùÒÔÔÚ¼ÆËãÐкŵÄʱºòÒª°Ñ»ùµØÖ·¼õÈ¥£¬Ò»°ãÇé¿öÏ£¬»ùµØÖ·µÄÖµÊÇ 0x00400000 ¡£ÁíÍ⣬ÓÉÓÚÒ»°ãµÄ PE ÎļþµÄ´úÂë¶Î¶¼ÊÇ´Ó 0x1000 Æ«ÒÆ¿ªÊ¼µÄ£¬ËùÒÔÒ²±ØÐë¼õÈ¥ 0x1000 ¡£ ºÃÁË£¬Ã÷°×ÁËÕâµã£¬ÎÒÃǾͿÉÒÔÀ´½øÐÐСѧ¼õ·¨¼ÆËãÁË£º ±ÀÀ£ÐÐÆ«ÒÆ = 0x0040104a - 0x00400000 - 0x1000 = 0x4a Èç¹ûä¯ÀÀ MAP ÎļþµÄ´úÂëÐÐÐÅÏ¢£¬»á¿´µ½²»³¬¹ý¼ÆËã½á¹û£¬µ«È´×î½Ó½üµÄÊýÊÇ CrashDemo.cpp ÎļþÖеģº 16 0001:00000046 Ò²¾ÍÊÇÔÚÔ´´úÂëÖÐµÄµÚ 16 ÐУ¬ÈÃÎÒÃÇÀ´¿´¿´Ô´´úÂë: 16 i /= j; ¹þ£¡£¡£¡¹ûÈ»¾ÍÊÇµÚ 16 Ðа¡£¡ ÐË·ÜÂð£¿ÎÒÒ²Ò»Ñù£¡ £º£© ·½·¨ÒѾ½éÉÜÍêÁË£¬´Ó½ñÒÔºó£¬ÎÒÃǾͿÉÒÔ¾«È·µØ¶¨Î»µ½Ô´´úÂëÖеıÀÀ£ÐУ¬¶øÇÒÖ»Òª±àÒëÆ÷¿ÉÒÔÉú³É MAP Îļþ£¨°üÀ¨ VC¡¢MASM¡¢VB¡¢BCB¡¢Delphi¡¡£©£¬±¾·½·¨¶¼ÊÇÊÊÓõġ£ÎÒÃÇʱ³£±§Ô¹ M$ µÄ²úÆ·ÈçºÎÈçºÎ²î£¬µ«Æäʵ M$ »¹ÊÇÓÐÒâÎÞÒâ¼äÌṩÁ˺ܶàÓмÛÖµµÄÐÅÏ¢¸øÎÒÃǵģ¬Ö»ÊÇÎÒÃÇÍùÍù²»¶®µÃÔõôÀûÓöøÒÑ¡¡ÏàÐÅÕâÑùÒ»À´£¬Äã¾Í¿ÉÒÔ¸üΪ´ÓÈݵØÃæ¶Ô¡°·Ç·¨²Ù×÷¡±ÌáʾÁË¡£ÄãÉõÖÁ¿ÉÒÔÒªÇóÓû§Ìṩ±ÀÀ£µÄµØÖ·£¬È»ºó¾Í¿ÉÒÔ×øÔÚ¼ÒÖÐÊæÊæ·þ·þµØÕÒµ½³ö´íµÄÄÇÐУ¬²¢½øÐÐÐÞÕý¡£ ÊDz»ÊǺÜË¬ÄØ£¿ £º£© [ Last edited by sdlj8051 on 2006-10-6 at 12:50 ] |
» ²ÂÄãϲ»¶
085600 286·Ö ²ÄÁÏÇóµ÷¼Á
ÒѾÓÐ4È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
275Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
286Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
083000ѧ˶274Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
¡¾Çóµ÷¼Á¡¿085601²ÄÁϹ¤³Ìר˶ | ×Ü·Ö272 |
ÒѾÓÐ5È˻ظ´
275Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´
0856£¬²ÄÁÏÓ뻯¹¤321·ÖÇóµ÷¼Á
ÒѾÓÐ8È˻ظ´
085701»·¾³¹¤³Ì£¬267Çóµ÷¼Á
ÒѾÓÐ12È˻ظ´
320·Ö£¬²ÄÁÏÓ뻯¹¤×¨Òµ£¬Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´














ROJECT_NAME.map ¡£×îºó°´Ï F7 À´±àÒëÉú³É EXE ¿ÉÖ´ÐÐÎļþºÍ MAP Îļþ¡£
»Ø¸´´ËÂ¥