<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    多線程的那點兒事(之多線程調試)

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

     軟件調試是我們軟件開發過程中的重要一課。在前面,我們也討論過程序調試,比如說這里。今天,我們還可以就軟件調試多講一些內容。比如說條件斷點,數據斷點,多線程斷點等等。

    [cpp] view plaincopy
    1. #include <stdio.h>  
    2. int value = 0;  
    3.   
    4. void test()  
    5. {  
    6.     int total;  
    7.     int index;  
    8.   
    9.     total = 0;  
    10.     for(index = 0; index < 100; index ++)  
    11.         total += index * index;  
    12.   
    13.     value = total;  
    14.     return ;  
    15. }  
    16.   
    17. int main()  
    18. {  
    19.     test();  
    20.     return 1;  
    21. }  
    (1)數據斷點

        所謂數據斷點,就是全局變量或者函數中的數計算的過程中,如果數據值本身發生了改變,就會觸發斷點。這里的數據有兩種,一個是全局數據,一個函數內部的數據。


    以全局數據value為例:

        a)按F10,運行程序,獲取value的地址;

        b)Alt+F9,選擇【DATA】->【Advanced】;

        c)在【Expression】中輸入DW(0x0043178),【ok】回車;

        d)F5繼續運行程序,則程序會在value發生改變的時候停住。

    以局部數據total為例,

        a)按F10,運行程序,獲取value的地址;

        b)Alt+F9,選擇【DATA】->【Advanced】;

        c)在【Expression】中輸入total,在【Function】輸入test,【ok】回車;

        d)F5繼續運行程序,則程序同樣會在total發生改變的時候停住。

    (2)條件斷點

        條件斷點和數據斷點差不多。只不過,數據斷點在數據發生改變的時候就會斷住,而條件斷點只有在滿足一定的條件下才會有斷住。比如說,我們可以讓test子程序在index==5的時候斷住。


        a)按F10,運行程序,獲取value的地址;

        b)Alt+F9,選擇【DATA】->【Advanced】;

        c)在【Expression】中輸入index==5,在【Function】輸入test,【ok】回車;

        d)F5繼續運行程序,則程序同樣會在index==5的時候停住。

    (3)多線程調試

        在VC上面對多程序的調試比較簡單。如果想要對程序進行調試的話,首先F10,開始運行程序。其次,我們需要等線程創建之后才能設置斷點,不然我們看到的程序只有main函數一個thread。

        a)單擊【Debug】,選擇【threads】,那么我們就可以開始多線程調試了;

        b)如果需要對某一個thread掛起,單擊對應的thread,選擇【suspend】即可;

        c)如果需要對某一個thread重新調度,單擊對應的thread,選擇【resume】即可;

        d)如果需要查看特定thread的堆棧,那么選擇那個thread,然后【Set Focus】,關閉threads對話框,在堆棧窗口中即可看到;    

        e)如果某個線程被掛住,那么此時所有的線程都掛住了,如果你step運行,所有的threads都會參與運行;

        f)如果需要對某一個thread進行調試,那么需要對其他的thread進行suspend處理  。

    總結:

        1)看內存、看堆棧、條件斷點、數據斷點需要綜合使用,

        2)編程越早調試,越好,

        3)先編寫好單線程程序,再編寫好多線程程序,

        4)對于多線程來說,模塊設計 > 編程預防 > 調試 > 事后補救。
       

     

    from:http://blog.csdn.net/feixiaoxing/article/details/7043631

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全