摘要:路標(biāo)是通過批注消息設(shè)置的,所以叫消息路標(biāo)。建立消息路標(biāo)的最大用途就是查看函數(shù)調(diào)用鏈。通過路標(biāo)的閃爍可以看到是否有調(diào)用關(guān)系,而如果想看調(diào)用鏈,雙擊閃爍的路標(biāo)即可上圖列舉了調(diào)用調(diào)用調(diào)用調(diào)用兩條調(diào)用關(guān)系鏈。
之前介紹了極客討論器通過分析C/C++/Java/Python/C#/Objective-C代碼來生成函數(shù)地圖,和按調(diào)用順序查看源代碼的旅行模式。
而在函數(shù)地圖下,還可以通過給函數(shù)節(jié)點(diǎn)設(shè)置路標(biāo)的方式,快速查看代碼間的調(diào)用關(guān)系。
路標(biāo)是通過批注消息設(shè)置的,所以叫“消息路標(biāo)”。簡(jiǎn)單來說,批注消息批注的代碼屬于哪個(gè)函數(shù),對(duì)應(yīng)的函數(shù)節(jié)點(diǎn)上就會(huì)設(shè)置一個(gè)路標(biāo)。如圖:
消息“開始游戲”批注在代碼startGame處,此代碼在函數(shù)main中,因此函數(shù)地圖上main函數(shù)設(shè)置了一個(gè)路標(biāo)。
建立消息路標(biāo)的最大用途就是查看函數(shù)調(diào)用鏈。如我們把代碼中幾個(gè)已知的關(guān)鍵部分用路標(biāo)標(biāo)注后,再查看某處不明所以的代碼:
上圖以自帶的c版的俄羅斯方塊代碼為例,Board::lineIsFull,因?yàn)檫@個(gè)函數(shù)和main函數(shù)之間存在調(diào)用關(guān)系(當(dāng)然所有函數(shù)都和main有直接或間接的調(diào)用關(guān)系),和Board::deleteLine之間存在調(diào)用關(guān)系,所以這兩個(gè)函數(shù)節(jié)點(diǎn)的路標(biāo)開始閃爍,而另一個(gè)路標(biāo)所在的函數(shù)和它沒有調(diào)用關(guān)系,保持原狀。
點(diǎn)擊路標(biāo)就能看到高亮它記錄的有關(guān)信息,推斷代碼和什么功能相關(guān):
上圖“如果此行已滿”和“則刪除這一行”高亮,表明Board::lineIsFull和方塊的消行相關(guān)。
通過路標(biāo)的閃爍可以看到是否有調(diào)用關(guān)系,而如果想看調(diào)用鏈,雙擊閃爍的路標(biāo)即可:
上圖列舉了
main 調(diào)用 Game::startGrame 調(diào)用 Board::clearPossibleLines 調(diào)用 Board::lineIsFull
Board::clearPossibleLines 調(diào)用 Board::lineIsFull
兩條調(diào)用關(guān)系鏈。
在這里有動(dòng)畫展示,和下載地址,歡迎使用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/66177.html
摘要:路標(biāo)是通過批注消息設(shè)置的,所以叫消息路標(biāo)。建立消息路標(biāo)的最大用途就是查看函數(shù)調(diào)用鏈。通過路標(biāo)的閃爍可以看到是否有調(diào)用關(guān)系,而如果想看調(diào)用鏈,雙擊閃爍的路標(biāo)即可上圖列舉了調(diào)用調(diào)用調(diào)用調(diào)用兩條調(diào)用關(guān)系鏈。 之前介紹了極客討論器通過分析C/C++/Java/Python/C#/Objective-C代碼來生成函數(shù)地圖,和按調(diào)用順序查看源代碼的旅行模式。 而在函數(shù)地圖下,還可以通過給函數(shù)節(jié)點(diǎn)設(shè)...
摘要:連接建立成功,就會(huì)觸發(fā)事件事件稍后再解說。當(dāng)連接建立時(shí)當(dāng)接收到數(shù)據(jù)時(shí)當(dāng)出現(xiàn)錯(cuò)誤時(shí)事件監(jiān)聽,主要用來在合適的時(shí)間點(diǎn)發(fā)送數(shù)據(jù),以及處理接收到來自串口的數(shù)據(jù)信息。數(shù)據(jù)會(huì)經(jīng)串口發(fā)送至與連接的硬件設(shè)備,比如板,或者板等等。 Serialport 簡(jiǎn)介 想象這樣一個(gè)世界,在那里你能用 JavaScript 代碼控制榨汁機(jī),燈,安防系統(tǒng),甚至機(jī)器人。嗯,是機(jī)器人!你會(huì)不會(huì)覺得很新奇以致興奮? Ser...
摘要:當(dāng)前代碼是以太坊,如果版本不同,代碼上可能存在差異。非產(chǎn)生區(qū)塊節(jié)點(diǎn)的策略圖,如圖,黃色節(jié)點(diǎn)將區(qū)塊傳播給青色節(jié)點(diǎn)至此,可以看出以太坊采用以石擊水的方式,像水紋一樣,層層擴(kuò)散新產(chǎn)生的區(qū)塊。 前言 這篇文章從區(qū)塊傳播策略入手,介紹新區(qū)塊是如何傳播到遠(yuǎn)端節(jié)點(diǎn),以及新區(qū)塊加入到遠(yuǎn)端節(jié)點(diǎn)本地鏈的過程,同時(shí)會(huì)介紹fetcher模塊,fetcher的功能是處理Peer通知的區(qū)塊信息。在介紹過程中,還會(huì)...
閱讀 3055·2021-11-16 11:51
閱讀 2663·2021-09-22 15:02
閱讀 3823·2021-08-04 10:21
閱讀 3708·2019-08-30 15:43
閱讀 2014·2019-08-30 11:04
閱讀 3656·2019-08-29 17:14
閱讀 556·2019-08-29 12:16
閱讀 2989·2019-08-28 18:31