99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

Keil 實用的調試技巧 - 1:隱晦定位

直接進入正題。請問下面這段代碼,會修改 arry2 的內容碼?(或則這么說,寫程序的人本意是想修改 arry1 的內容,他能達到自己的目的嗎?)

很明顯,當我們仿真程序的時候發現,

以上這段代碼意外的修改了 arry2 中的內容。這在編碼一些大型程序的時候就會導致很多意想不到的結果,比較好的情況下只是程序運行邏輯不正常。但是一旦修改到其他重要的內存空間,比如函數指針之類的地方,可能就會導致程序死機。
這種簡單的程序一旦出現問題,我們很容易分析,哦,是指針使用越界導致了內存的意外篡改。但是,一旦等到程序的體量比較大,光想靠分析程序邏輯來確認到底是哪里意外篡改內存這幾乎是不太可能的情況。今天我就準備分享一個比較實用的小技巧。請在調試界面按下:Ctrl + B。至于這是什么東西,可以自行百度 keil 的 breakpoint 功能。它就能我們今天的主角。暫且命名為:變量定位器。它能在變量被修改或則讀取的時候停下來。我們就使用這種簡單的功能就可以了。

  1. 想要觀察的變量
  2. 是否監測被讀位置?
  3. 是否監測被寫位置?也就是我們意外篡改的地方
  4. 這里一般選擇 Object 就可以了。
其他地方暫時就不需要知道了。好了,有了這樣的工具,我們如何確定上面例子中 arry2 的內容是在何處被意外修改的?當你知道 arry2 的內容肯定不是你自己修改的時候,我們在 breakpoint 中填入一下信息:

然后點擊 define 然后就得到了如下的內容。

這就相當于我們告訴 keil 調試器,我們需要在 arry2 被 write 的時候自己停下來。關閉 breakpoint 窗口點擊運行。

你會發現,就算你沒有打斷點,但是程序也會莫名其妙的停在了第九行。這是為什么呢?因為第8行修改了 arry2 的內容。這也就符合我之前的預期。無論哪里修改 arry2 的內容,程序都會停下來。是不是很實用?對于內存的意外篡改調試有很大的幫助。
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 5
收藏 5
關注 54
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 久久综合九色综合国产 | av中文字幕最新在线观看 | 久久AV老司机精品网站导航 | 亚洲精品一区二区网址 | 久久午夜国产 | 日韩AV高清无码 | 在线观看黄免费 | 日韩精品人妻系列无码AV东京 | 精品久久999 | aa视频免费看 | 国产一区久久精品 | 久久久久久久久久久高潮 | 亚洲一区二区三区免费在线观看 | 国产精品5c5c5c | 视频精品中文字幕一区二区 | 欧美一区二区三区在线看 | 亚洲日本va在线观看 | 一区二区三区波多野结衣在线观看 | 内地一级毛片 | 青青草综合视频 | 高清性色生活片97 | 3344www成人| 伊人福利| 国产妇女乱码一区二区三区 | 国产视频精品xxxx | 93超碰国产大屁股 | 中文字幕一区二区在线播放 | 大地资源免费更新在线播放 | 色欲av久久无码影院色戒 | 奇米777四色成人影视 | 91狠狠综合 | 裸男网站gv | 毛片久久一区二区三区网站 | 亚洲永久精品ww.7491进入 | 日本xxxx裸体bbbb | 国产精品理伦 | 午夜视频福利在线 | 亚洲综合在线另类色区奇米 | 全国最大成人网站 | 午夜天堂网 | 国产精品免费入口 |