2009-12-18 16 views
5

Bir işlemi başlatmak için kullanılabilecek herhangi bir komut veya araç olup olmadığını hemen öğrenmek ve sonra hemen duraklatmak isterim.Bir işlem nasıl başlatılır ve sonra hemen duraklatılır?

Bu işleve ihtiyacım var, böylece bir hata ayıklayıcı eklemek için zamanım olabilir. Görsel stüdyonun/debugexe özelliğini denedim, ancak programın davranışı değişmiş gibiydi. Bu yüzden onu eklemek ve hata ayıklamak için başka bir yol bulmalıyım.

Teşekkür ederiz.

+2

Asıl sorun, bir yarış durumu veya başka bir eşzamanlılık sorunu var ve bu yüzden sadece bir hata ayıklayıcı altında çalışan sorun kendisini gizlemek için neden olduğundan şüpheleniyorum. –

+0

Sorunum için yararlı yorumlar sağladığınız için hepinize teşekkür ederim. Program için bir eklenti geliştirdiğim için, ana bilgisayar programının kaynak kodunu değiştiremiyorum. Bu nedenle, keskin ve nobugz tarafından sağlanan çözümler benim sorunum için daha uygun olurdu. R Samuel Klatchko ve Rytmis'in çözümünü kullanabilmek için host programını değiştirmemiz gerektiğini düşünüyorum. – askalee

cevap

4

CREATE_SUSPENDED bayrağıyla CreateProcess() öğesini kullanabilirsiniz. Bu işlem, askıya alınan ana iş parçacığı ile başlayacaktır. Sonra ekledikten sonra ResumeThread() diyorsunuz.

0

İlk ifade olarak Sleep() numaralı çağrı ekleme hakkında.

+0

Bu çoğu zaman işe yarayacak. Ama sorun WinMain() çağrılmadan önce bir şeyde yatıyorsa işe yaramaz olacaktır. – sharptooth

0

Ayrıca kodda

System.Diagnostics.Debugger.Break(); 

için bir çağrı ekleyebilir. Programı askıya alır ve kullanmak istediğiniz hata ayıklayıcısını seçmenizi ister. Daha sonra çalışan bir Visual Studio örneğine ekleyebilirsiniz. Zaten bir hata ayıklayıcısından çalışıyorsanız, bir kesme noktasına vuracakmış gibi kırılacaktır.

İlgili konular