A. keil涓璋冭瘯镄勬椂鍊欎负浠涔堜笉鑳借剧疆鏂镣逛简锛燂纻 鍙屽嚮镞犳晥锛丗镞犳晥
濡傛灉浣犻紶镙囩偣涓镄勪唬镰佽缂栬疟鍣ㄤ紭鍖栨帀,杩欐牱镄勪唬镰佸湪纭浠朵腑涓嶅瓨鍦(琚浼桦寲鎺変简),镓浠ユ墦涓崭笂鏂镣圭殑.
鍙﹀栧傛灉鏄鏂镣逛釜鏁拌秴杩囩‖浠堕檺鍒,涓鑸浼氩脊鍑轰竴涓鎻愮ず鏂镣逛釜鏁拌繃澶氱殑鎻愮ず镄.镓浠ヤ綘瑕佹墦鏂镣圭殑浠g爜琚浼桦寲镄勫彲鑳芥ф瘆杈冨ぇ.
B. 用Release版测试程序调试Dll,怎么不能设置断点了
1.使用release程序和debug版本的dll或者debug程序和release版本的dll这种组合,本身不是一种明智的选择,因为这样组合会出现莫名其妙的错误。
2.release设置的断点可能是无效的断点,需要修改工程的属性,使release下可以使用断点,我想系统重新安装,可能导致以前的设置无效,所以建议重新设置一下编译环境。
3.CVPACK : fatal error CK1007: invalid Types table in mole obj\i386\objidl_i.obj
LINK : warning LNK4027: CVPACK error
这个错误可能是由于你的dll没有编译成功。
4.调试release程序可以使用输出日志的形式来测试。
C. 鍦╧eil杞浠朵腑璋冭瘯绋嫔簭镞讹纴镞犳硶璁剧疆鏂镣癸纴蹇呴’鍒囨崲鍒版眹缂栬瑷绐楀彛镓嶈兘璁剧疆鏂镣癸纴镐庝箞锷烇纻
棣栧厛瑕佽寸殑锛孠eil鏄闱炲父涓嶉敊镄勬ā𨰾熷拰璋冭瘯宸ュ叿銆
鍏舵¤佽寸殑灏辨槸鎴戜釜浜虹悊瑙g殑缁忛獙锛
1銆乲eil鏄妯℃嫙MCU镄勫唴閮ㄧ壒镐у拰澶栭儴璁惧囷纸I/O鍙c佷腑鏂銆佷覆琛屻佸畾镞剁瓑锛夌壒镐э纴鍏舵ā𨰾熸槸涓绉嵝滆嚜鍐呭悜澶栤濈殑鐪熷疄妯℃嫙锛屾崲鍙ヨ瘽璇达纴鍙浠ュ张浠绘剰涓涓鍐呴儴鏁版嵁澶勭悊缁撴灉铡绘寚瀵糏/O鍙e伐浣滐纴浣呜繖绉岻/O宸ヤ綔镄勬柟钖戞槸钬滆緭鍑哄瀷钬濈殑锛埚箍涔夛级锛岃屽逛簬MCU瑕佸幓銮峰彇澶栭儴鐘舵佺殑宸ヤ綔锛堟垜鎶婂畠绉颁綔涓衡滆緭鍏ュ瀷钬濈殑锛夛纴鍒椤湪Keil涓璋冭瘯镞犳硶鑳藉弽鏄犵湡瀹炴儏鍐碉纴蹇呴’瑕侀厤钖堢浉搴旂‖浠舵墠鑳芥e父璋冭瘯锛屽洜涓哄綋浠呯敤Keil杞浠讹纸涓岖敤浠讳綍鍏朵粬纭浠讹级鍦ㄧ数鑴戜笂钬滆蒋钬濊皟璇曞伐绋嬫椂锛岃诲彇澶栭儴I/O鍙o纴璇昏繃𨱒ョ殑鏁版嵁閮芥槸1锛屼絾杩椤彲鑳藉苟涓嶆剰锻崇潃浣犵殑杞浠舵湁闂棰樸
2銆佹湁浜嗙湡瀹炩滆緭鍑哄瀷钬濈殑璋冭瘯锛岃屾棤娉曗滆緭鍑哄瀷钬濈殑璋冭瘯锛屼綘鏄涓嶆槸瑙夊缑鍙链変竴鍗婄殑锷熻兘锻锛熷叾瀹炰笉鏄杩欐牱镄勚傚綋鎴戜滑瑕佸幓璋冭瘯钬滆緭鍑哄瀷钬濇椂锛屾垜镄勫仛娉曟槸鐢ㄨ蒋浠跺幓鍒朵綔涓涓鍜屽栭儴纭浠剁壒镐т竴镙风殑杞浠舵ā鍧楋纸涓鑸杩欎釜妯″潡锅氲捣𨱒ユ槸姣旇缉璐瑰姏镄勶级锛屼篃灏辨槸璇寸敤鎴戝仛镄勫彟涓涓镫绔嬬殑杞浠舵ā鍧楀幓浜х敓鎴栭夊彇MCU闇姹傜殑杈揿叆鏁版嵁锛岃繖镙峰氨鑳介獙璇佹煇浜涜繃绋嬫槸钖﹀湪镓ц屼腑鎸夌収镊宸辩殑镒忚瘑镎崭綔銆
鎴戞浘缁忓氨鍙链塳eil锅氲繃DS18B20镄勨沧悳绱ROM钬濈殑绠楁硶瀹炵幇鍜屾暣涓杩囩▼锛埚洜涓哄傛灉鐩存帴鐑ц繘MCU绋嫔簭镄勮瘽锛屽傛灉涓嶅嚭姝g‘缁撴灉锛屽叾瀹炴牴链灏卞彂鐜颁笉浜嗛敊璇瀛桦湪锛夛纴鎴戝仛浜嗕竴涓澶栭儴DS18B20镄勭‖浠朵豢鐪熻蒋浠舵ā鍧楋纸鐢卞緢澶氢釜鍑芥暟缁勬垚锛夛纴钖庢潵灏辨槸鍦↘eil镄勪竴浜涒滆蒋钬濆崟姝ヨ皟璇曚腑鍙戠幇浜嗘垜镓链夌畻娉曚腑镄勫嚭鐜扮殑闂棰桡纴链钖庢垜镓嶆妸澶氢釜DS18B20杩炴帴鍦ㄤ竴涓狭CU镄処/O鍙d笂锛屽叏閮ㄦg‘镄勮幏鍙栦简鍦ㄧ嚎镄勮兘姝e父宸ヤ綔镄凞S18B20镄64浣嶅湴鍧銆
链钖庢垜𨱍宠寸殑灏辨槸锛屼粎鍦╧eil涓嫔幓浠跨湡澶栭儴纭浠剁壒镐у仛闇瑕佺殑杞浠舵ā鍧楁瘆杈冧细蹇界暐镆愪簺鏂归溃钥屽嚭阌欑殑锛堜竴鑸钥岃█锛夛纴镓浠ヨ佸紑鍙慿eil宸ョ▼璇濓纴鎴戦潪甯告帹钻愮敤鐩稿簲镄勪豢鐪熷櫒锛堣繖涓鍙鏄纭浠跺摝锛夊幓璋冭瘯浣犵殑椤圭洰銆
PS锛氩彲𨱍沧垜涓鐩撮兘鏄娌℃湁纭浠朵豢鐪熷櫒镄勬浔浠朵笅寮鍙戝伐浣灭殑锛屾湁镄勬椂鍊欎细鐩稿綋钥楁椂銆
D. keil5 为什么好多指令不能打断点
在一定级别的优化之后,有些源程序代码行根本就没有对应的编译内容了,自然也就没办法打断点。
优化级别调高以后,调试的策略也要对应变化,以汇编代码段为准。