Megosztás a következőn keresztül:


Többszálú alkalmazások hibakeresése a Visual Studióban

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 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