Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szál olyan utasítások sorozata, amelyekhez az operációs rendszer processzoridőt biztosít. Az operációs rendszerben futó összes folyamat legalább egy szálból áll. Az egynél több szálat tartalmazó folyamatokat többszálasnak nevezzük.
A több processzorral, többmagos processzorokkal vagy hipertreading folyamatokkal rendelkező számítógépek több egyidejű szálat is futtathatnak. A több szálat használó párhuzamos feldolgozás jelentősen javíthatja a program teljesítményét, de a hibakeresést is megnehezítheti, mivel sok szálat követ nyomon.
A tökéletes párhuzamos feldolgozás nem mindig lehetséges. A szálakat néha szinkronizálni kell. Előfordulhat, hogy az egyik szálnak várnia kell egy másik szál eredményeire, vagy előfordulhat, hogy az egyik szál kizárólagos hozzáférést igényel egy másik szál által használt erőforráshoz. A szinkronizálási problémák gyakori oka a többszálú alkalmazások hibáinak. Előfordulhat, hogy a szálak olyan erőforrásra várnak, amely soha nem válik elérhetővé. Ez egy holtpont nevű feltételt eredményez.
Szálak és folyamatok
A szálak és folyamatok a számítástechnika kapcsolódó fogalmai. Mindkettő egy adott sorrendben végrehajtandó utasítások sorozatát jelöli. A különálló szálakban vagy folyamatokban lévő utasítások azonban párhuzamosan is végrehajthatók.
A folyamatok az operációs rendszerben léteznek, és megfelelnek annak, amit a felhasználók programoknak vagy alkalmazásoknak tekintenek. Egy szál viszont egy folyamaton belül létezik. Emiatt a szálakat néha könnyű folyamatoknak is nevezik. Minden folyamat egy vagy több szálból áll.
Több folyamat megléte lehetővé teszi, hogy a számítógép egyszerre több feladatot is végrehajtson. Több szál megléte lehetővé teszi, hogy egy folyamat egymástól elválasztsa a munkát párhuzamosan. A többprocesszoros számítógépeken a folyamatok vagy szálak különböző processzorokon futtathatók. Ez lehetővé teszi a valódi párhuzamos feldolgozást.
Eszközök többszálú alkalmazások hibakereséséhez
A Visual Studio különböző eszközöket biztosít a többszálú alkalmazások hibakereséséhez.
A szálak esetében a szálak hibakeresésének elsődleges eszközei a Párhuzamos verem ablak, a Párhuzamos figyelő ablak, a forrásablakok száljelölői, a Szálak ablak és a Hibakeresési hely eszköztár. Ha többet szeretne megtudni a Párhuzamos veremekszálnézetéről, olvassa el a Holtpont hibakeresése a Szálak nézetben című témakört. A Párhuzamos verem és a Párhuzamos figyelő ablak használatának megismeréséhez tekintse meg a többszálú alkalmazások hibakeresésének első lépéseit. Az első lépések című cikk bemutatja, hogyan használhatja a száljelölőket. Lásd még : Útmutató: C++ AMP-alkalmazások hibakeresése.
Az aszinkron .NET-kód esetében a hibakeresés elsődleges eszközei a Párhuzamos halmok ablak Feladatok nézete. Első lépésként tekintse meg az aszinkron alkalmazás (.NET) hibakeresését ismertető témakört.
A szálak esetében a szálak hibakeresésének elsődleges eszközei a Párhuzamos verem ablak, a Párhuzamos figyelő ablak, a forrásablakok száljelölői, a Szálak ablak és a Hibakeresési hely eszköztár. A Párhuzamos veremekszálak nézetéről a Szálak és feladatok megtekintése a Párhuzamos verem ablakban című témakörben olvashat. A Párhuzamos verem és a Párhuzamos figyelő ablak használatának megismeréséhez tekintse meg a többszálú alkalmazások hibakeresésének első lépéseit. Az első lépések című cikk bemutatja, hogyan használhatja a száljelölőket. Lásd még : Útmutató: C++ AMP-alkalmazások hibakeresése.
Az aszinkron .NET-kód esetében a hibakeresés elsődleges eszközei a Párhuzamos halmok ablak Feladatok nézete. További információ: Szálak és feladatok megtekintése a Párhuzamos veremek ablakban.
A GPU-n található szálak hibakereséséhez az elsődleges eszköz a GPU Threads ablak. Lásd : A GPU-szálak ablak használata.
A folyamatok esetében az elsődleges eszközök a Folyamat csatolása párbeszédpanel, a Folyamatok ablak és a Hibakeresési hely eszköztár.
A Visual Studio emellett hatékony töréspontokat és nyomkövetési pontokat is biztosít, amelyek többszálú alkalmazások hibakeresése esetén hasznosak lehetnek. Töréspont-feltételek és szűrők használatával töréspontokat helyezhet el az egyes szálakon. A nyomkövetési pontok lehetővé teszik a program végrehajtásának megszakítás nélküli nyomon követését, a problémák, például a holtpontok tanulmányozása érdekében. További információ: Töréspontműveletek és nyomkövetési pontok.
A felhasználói felülettel rendelkező többszálú alkalmazások hibakeresése különösen nehéz lehet. Érdemes lehet az alkalmazást egy második számítógépen futtatni, és távoli hibakeresést használni. További információ: Távoli hibakeresés.
Az alábbi táblázat a rendelkezésre álló információkat és az ezeken a helyeken végrehajtható műveleteket mutatja be:
| Felhasználói felület | Elérhető információk | Végrehajtható műveletek |
|---|---|---|
| Csatolás a folyamathoz párbeszédpanel | A következőhöz csatolható elérhető folyamatok: - Folyamat neve (.exe) - Folyamatazonosító száma - Menüsáv címe - Típus (Felügyelt v4.0; Felügyelt v2.0, 1.1- és 1.0-s verzió; x86; x64; IA64) - Felhasználónév (fióknév) - Munkamenet száma |
Válassza ki a csatolandó folyamatot Távoli számítógép kiválasztása A távoli számítógépekhez való csatlakozás átviteli típusának módosítása |
| Folyamatok ablak | Csatolt folyamatok: - Folyamat neve - Folyamatazonosító száma - A .exe feldolgozásának elérési útja - Menüsáv címe - Állapot (törés. Futtatás) - Hibakeresés (natív, felügyelt stb.) - Átviteli típus (alapértelmezett, natív hitelesítés nélkül) - Transport Qualifier (távoli számítógép) |
Eszközök: -Mellékel -Elválaszt -Befejeződik Helyi menü: -Mellékel -Elválaszt – Leválasztás a hibakeresés leállásakor -Befejeződik |
| Hely eszköztár hibakeresése | - Aktuális folyamat - Az alkalmazás felfüggesztése – Az alkalmazás folytatása – Az alkalmazás felfüggesztése és leállítása - Aktuális szál - Aktuális száljelző állapotának váltása - Csak megjelölt szálak megjelenítése – Csak az aktuális folyamat megjelenítése - Aktuális veremkeret |
– Váltás másik folyamatra – Az alkalmazás felfüggesztése, folytatása vagy leállítása – Váltás másik szálra az aktuális folyamatban – Váltás másik veremkeretre az aktuális szálon - Aktuális szálak megjelölése vagy törlése - Csak megjelölt szálak megjelenítése – Csak az aktuális folyamat megjelenítése |
| Párhuzamos halmok ablak | - Több szál hívása egy ablakban. - Aktív veremkeret minden szálhoz. - Hívók és hívók bármilyen módszerhez. - Holtpont észlelése |
– Megadott szálak szűrése – Külső kódveremek szűrése – Váltás Feladatok nézetre - Szál megjelölése vagy törlése -Búg - Stack Frames másolása – Az összes verem mentése/exportálása képként |
| Párhuzamos figyelő ablak | - A jelzőoszlop, amelyben megjelölhet egy szálat, amelyre különös figyelmet szeretne fordítani. - A keret oszlopa, amelyben egy nyíl jelzi a kijelölt keretet. - Konfigurálható oszlop, amely képes megjeleníteni a gépet, a folyamatot, a csempét, a feladatot és a szálat. |
- Szál megjelölése vagy törlése - Csak megjelölt szálak megjelenítése - Keretek váltása – Oszlop rendezése - Szálak csoportosítása - Szálak rögzítése vagy felolvasztása - exportálja az adatokat a Párhuzamos figyelő ablakban |
| Szálak ablak | Szálak az aktuális folyamatban: - Szálazonosító - Felügyelt azonosító - Kategória (főszál, interfészszál, távoli eljáráshívás-kezelő vagy feldolgozó szál) - Szál neve – A szál létrehozásának helye -Elsőbbség - Affinitási maszk - Felfüggesztett darabszám - Folyamat neve - Jelző jelző - Felfüggesztett jelző |
Eszközök: -Keresés - Keresési hívásverem - Csak saját kód megjelölése - Az egyéni modul kiválasztásának megjelölése - Csoportosítás a következő szerint: -Oszlopok - Hívások kibontása/összecsukása - Csoportok kibontása/összecsukása - Szálak rögzítése/felolvasztása Helyi menü: - Szálak megjelenítése a forrásban – Váltás szálra - Futó szál rögzítése - Fagyasztott szál felolvasztása - Téma megjelölése további tanuláshoz - Szál leválasztása - Szál átnevezése - Szálak megjelenítése és elrejtése Egyéb műveletek: – Egy szál hívásveremének megtekintése egy adatleírásban |
| Forrásablak | A bal oldali ereszcsatornában lévő száljelzők egy vagy több szálat jelölnek (alapértelmezés szerint ki van kapcsolva a Szálak ablak helyi menüjének használatával) | Helyi menü: – Váltás szálra - Téma megjelölése további tanuláshoz - Szál leválasztása |
| Feladatok ablak | – Megtekintheti az objektumokkal kapcsolatos Task információkat, beleértve a tevékenységazonosítót, a tevékenység állapotát (ütemezett, futtatott, várakozó, holtponton lévő), és hogy melyik szál van hozzárendelve a tevékenységhez. - A hívásverem aktuális helye. – A feladatnak a létrehozáskor átadott meghatalmazott |
– Váltás az aktuális tevékenységre – Tevékenység megjelölése vagy törlése – Tevékenység rögzítése vagy felolvasztása |
| GPU-szálak ablak | - A jelzőoszlop, amelyben megjelölhet egy szálat, amelyre különös figyelmet szeretne fordítani. - Az aktuális szál oszlopa, amelyben sárga nyíl jelzi az aktuális szálat. - A Szálszám oszlop, amely az azonos helyen lévő szálak számát jeleníti meg. - A Vonal oszlop, amely azt a kódsort jeleníti meg, amelyben minden szálcsoport található. - A Cím oszlop, amely azt az utasításcímet jeleníti meg, ahol a szálak egyes csoportjai találhatók. - A Hely oszlop, amely a cím kódjában található hely. - Az Állapot oszlop, amely azt mutatja, hogy a szál aktív vagy blokkolva van-e. - A Csempe oszlop, amely a sor szálainak csempeindexét jeleníti meg. |
– Váltás másik szálra - Egy adott csempe és szál megjelenítése – Oszlop megjelenítése vagy elrejtése – Rendezés oszlop szerint - Szálak csoportosítása - Szálak rögzítése vagy felolvasztása - Szál megjelölése vagy törlése - Csak megjelölt szálak megjelenítése |