最近在arm
上折騰tinyx
,花三天時間終於編譯過去了,可是板子上一執行,就莫名其妙的宕機。
開始以為是驅動的問題,經過除錯,發現在初始化時,進入函式
createrootcursor
後tinyx
就玩完,一想,沒有道理啊,
cursor
字型都存在,不可能建立不了
cursor
啊。進一步分析,在函式
shadowgetimage
裡呼叫unwrap
,執行該操作之後,
pscreen->getimage
就為null
,看了看
unwrap
的實現,原來它只是把
pscrpriv
和pscreen
的函式指標
getimage
對調了一下,而
pscrpriv
的getimage
是null
,所以交換之後
pscreen->getimage
就為null
。不會pscrpriv
沒初始化成功吧?於是在
shadowsetup
設定了乙個斷點,單步跟蹤了整個函式,初始化過程完全正確。
百思不得其解,即然初始化時是對的,那一定是中途被修改了,難道
tinyx
也有記憶體溢位的問題?在pc
上和板子上對比除錯,在
arm板子上,進入
shadowgetimage
時,shadowscrprivateindex
的值是0
,而pc
上的值是
5。奇怪?難道真的被我估中了?
想使用gdb
的watch
功能監視
shadowscrprivateindex
,不行,原來
arm-linux-gdb
不支援watch
功能,只好使用
gdb的
display
功能。經過反覆的試,最後發現執行
完後,shadowscrprivateindexr
的值就變為
0了,又分析全域性變數的分布情況,了解
kdkeymap
和shadowscrprivateindex
的位置連在一起,猜測是訪問
kdkeymap
越界了,繼續除錯,事實證實不出我所料。
想了想,
tinyx
裡不會有這種錯誤吧,況且
pc上是執行得很正常啊,仔細看了變數的定義和相關的訪問**,沒有發現問題。只是發現在乙個迴圈裡,
i的值竟達到了
248,與
pc上的有點不同,檢查了一點迴圈的條件,估計是
nr_keys
值在pc
上和arm
上有所不同。找到該巨集的定義,它是在
linux
的keyboard.h
裡定義的。
arm linux
用的是2.69
核心,
其值定義為
256,而
pc上執行的是
2.4核心,裡定義的是
128。在
arm上它,就越界了,而
pc上正常。
(tinyx
用的是xfree 4.5)
在arm上搭建flask執行環境
flask是乙個簡單的實用的web服務,由於其比較小巧,對於一些簡單需求的服務是比較方便的,如restful api。由於flask是乙個在python上執行的庫,所以想要執行flask,那麼乙個python庫是必不可少的,那麼就需要交叉編譯乙個python庫,可以參考 交叉編譯python 2.7...
Linux 在乙個命令列上執行多個命令
對於單個命令執行我想大多數人都是明了的,也就是在乙個命令列上執行一條命令。那對於在一行上執行多個命令怎麼辦呢,其實也很簡單,只需在各命令之間加上特殊命令符號,我們常規使用到的有3個特殊命令符號。1.如果被分號 所分隔的命令會連續的執行下去,就算是錯誤的命令也會繼續執行後面的命令。root local...
Linux 在乙個命令列上執行多個命令
原文出處 對於單個命令執行我想大多數人都是明了的,也就是在乙個命令列上執行一條命令。那對於在一行上執行多個命令怎麼辦呢,其實也很簡單,只需在各命令之間加上特殊命令符號,我們常規使用到的有3個特殊命令符號。1.如果被分號 所分隔的命令會連續的執行下去,就算是錯誤的命令也會繼續執行後面的命令。root ...