folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# İle Yazılan Uygulamanın Nerede Hata Verdiğini Bilmek



C# İle Yazılan Uygulamanın Nerede Hata Verdiğini Bilmek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    Merhaba,

    Visual Studio da geliştirdiğim bir uygulama bazı bilgisayarlarda hata veriyor. Debug esnasında hangi satırda ne yaparken hata verdiğini bulmak kolay ama başka bir bilgisayarda bunu nasıl öğrenebilirim? Bunun bir yolu var mı? Hataları ya da tüm işlemleri nasıl loglayabiliriz ve bu logları hatayı tespit etmek amacıyla nasıl kullanabilirim? Önerisi olan var mıdır?

    Sevgiler.

    RockZs tarafından 18/Tem/19 20:21 tarihinde düzenlenmiştir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tawe
    Tawe's avatar
    Kayıt Tarihi: 16/Ağustos/2015
    Erkek

    Nuget'ta mevcut olan NLog kütüphanesine bakmanı öneririm. Bu kütüphaneyle uygulaman hata verdiğinde hataları ya da önemli gördüğün noktalarda istediğin şeyleri loglayabilirsin. Bu logları dosyaya yazabilirsin, database varsa oraya kaydedebilirsin, HTTP ile uzak sunucuna gönderebilirsin. Envai çeşit seçenek içinden kendine uygun olanı seçebilirsin. NLog oldukça kapsamlı bu konuda.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    Tawe bunu yazdı

    Nuget'ta mevcut olan NLog kütüphanesine bakmanı öneririm. Bu kütüphaneyle uygulaman hata verdiğinde hataları ya da önemli gördüğün noktalarda istediğin şeyleri loglayabilirsin. Bu logları dosyaya yazabilirsin, database varsa oraya kaydedebilirsin, HTTP ile uzak sunucuna gönderebilirsin. Envai çeşit seçenek içinden kendine uygun olanı seçebilirsin. NLog oldukça kapsamlı bu konuda.

    Tavsiye ve açıklama için teşekkür ederim. İyi bir kütüphaneye benziyor. Deneyeceğim. 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ILKER06
    ILKER06's avatar
    Kayıt Tarihi: 15/Ağustos/2005
    Erkek

    Log tut hocam C de temp diye bir klasor olustur oraya .txt olarak tut.

    ayrı bir class olustur ornegın LogClass diye  hata olabilecek yada genel butun kod bloklarını Try Catch arasında yaz zaten hata verince catch bloguna dusecek  exception fırlatacak sana sende exception a dustugu yerde da logla

    ancak boyle bulabılırsın eger uygulaman web uygulamasıysa configden adama kendini baglar oyle bulabilirsin ama ilk yazdıgım maddeyi heryerde kullanabilirsin 

    edit: calıstıgım şirkette kendi yazdıgım bir log yapısı bu hocam 

    ornegin LogClass.cs diye bir yere yaz bunu cagar dur bunu her hareketını logla


    public static void Log(string pAppName, string pMsg)
    {
    string sess_info = "";
    string msg = "";
    try
    {
    string filename = Get_Log_File_Path();
    if (File.Exists(filename))
    msg = System.IO.File.ReadAllText(filename);

    msg += "_" + DateTime.Now.ToString("dd/MM/yy HH:mm:ss") + "_" + sess_info + pAppName + " " + pMsg + Environment.NewLine;
    System.IO.File.WriteAllText(filename, msg);

    }
    catch (Exception ex)
    {
    Common.Log("Log Error", ex.Message);
    }
    }

    private static string Get_Log_File_Path()
    {
    string res = "";
    string today_log_file = "Senin_program_adin" + DateTime.Now.ToString("yyMMdd") + "_" + typeof(Common).Namespace + ".log";

    string temp_path = Get_Log_Path();
    res = Path.Combine(temp_path, today_log_file);
    if (Directory.Exists(temp_path) == false)
    {
    try
    {
    Directory.CreateDirectory(temp_path);
    }
    catch (Exception ex)
    {
    res = "c:\\" + today_log_file;
    try
    {
    Log("hede hodo", "Unable to access to program files directory (" + res + ") for logging : " + ex.Message);
    }
    catch (Exception)
    {

    }
    }
    }

    return res;
    }

    public static string Get_Log_Path()
    {
    string temp_path = Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.System));
    temp_path = Path.Combine(temp_path, "temp");
    temp_path = Path.Combine(temp_path, "HedeHodo_Logs");

    return temp_path;
    }

    ILKER06 tarafından 19/Tem/19 00:17 tarihinde düzenlenmiştir

    Hayattaki en güzel şeyler : Ya kanun dışı, ya ahlak dışı ya da şişmanlatıcıdır.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    Çok teşekkürler. Log tutmak önemli.

    Yaptığım bi' uygulama bazı bilgisayarlarda başka hiç bir mesaj olmadan "uygulama çalışmayı durdurdu" hatası veriyor. Maksadım bunun nedenini anlamak çünkü çoğunlukta çalışırken azınlık olarak böyle bir hata vermesi can sıkıcı. Kullanıcı tarafında hatayı anlamak kolay olmuyor.

    Her mekanizmada try catch yapısı kullanmak mantıklı. Bunu javascript te bolca kullansam da C# uygulamamda bu pek fazla yok diyebilirim.

    Keşke mevcut uygulamaya birşey ekleyebilsem ve bana nerede hata verdiğini gösterse. Böyle birşey lazım. Bu benim için çabuk ve kolay bir çözüm olurdu. 

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Roark
    Roark's avatar
    Kayıt Tarihi: 12/Ağustos/2011
    Erkek
    RockZs bunu yazdı

    Çok teşekkürler. Log tutmak önemli.

    Yaptığım bi' uygulama bazı bilgisayarlarda başka hiç bir mesaj olmadan "uygulama çalışmayı durdurdu" hatası veriyor. Maksadım bunun nedenini anlamak çünkü çoğunlukta çalışırken azınlık olarak böyle bir hata vermesi can sıkıcı. Kullanıcı tarafında hatayı anlamak kolay olmuyor.

    Her mekanizmada try catch yapısı kullanmak mantıklı. Bunu javascript te bolca kullansam da C# uygulamamda bu pek fazla yok diyebilirim.

    Keşke mevcut uygulamaya birşey ekleyebilsem ve bana nerede hata verdiğini gösterse. Böyle birşey lazım. Bu benim için çabuk ve kolay bir çözüm olurdu. 

    Ne kadar büyük bir program hocam ? Eğer çok büyük Değilse boş bir günde ya da bir gününü ayırıp hata fırlayacak yerleri try- catch içine alabilirsin. 

    Bir otomasyon yazmıştım 10+k kod var yazarken nerede hata fırlattıysa direkt orada exception handling ekledim öyle öyle tamamlanıyor , senin yazma aşaman bittiği için zaman ayırıp düzeltmek bir yöntem 

    diğer yöntemse yazılanlar gibi log tutup , patladığı yere direkt kod tarafına erişmek 

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Herbokolog
    KaptaN
    KaptaN's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek
    RockZs bunu yazdı

    Çok teşekkürler. Log tutmak önemli.

    Yaptığım bi' uygulama bazı bilgisayarlarda başka hiç bir mesaj olmadan "uygulama çalışmayı durdurdu" hatası veriyor. Maksadım bunun nedenini anlamak çünkü çoğunlukta çalışırken azınlık olarak böyle bir hata vermesi can sıkıcı. Kullanıcı tarafında hatayı anlamak kolay olmuyor.

    Her mekanizmada try catch yapısı kullanmak mantıklı. Bunu javascript te bolca kullansam da C# uygulamamda bu pek fazla yok diyebilirim.

    Keşke mevcut uygulamaya birşey ekleyebilsem ve bana nerede hata verdiğini gösterse. Böyle birşey lazım. Bu benim için çabuk ve kolay bir çözüm olurdu. 

    .net framework güncel mi o pc de yada sen hangi framework te yazıyon bundan dolayıda olmuş olabilir.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    KaptaN bunu yazdı
    RockZs bunu yazdı

    Çok teşekkürler. Log tutmak önemli.

    Yaptığım bi' uygulama bazı bilgisayarlarda başka hiç bir mesaj olmadan "uygulama çalışmayı durdurdu" hatası veriyor. Maksadım bunun nedenini anlamak çünkü çoğunlukta çalışırken azınlık olarak böyle bir hata vermesi can sıkıcı. Kullanıcı tarafında hatayı anlamak kolay olmuyor.

    Her mekanizmada try catch yapısı kullanmak mantıklı. Bunu javascript te bolca kullansam da C# uygulamamda bu pek fazla yok diyebilirim.

    Keşke mevcut uygulamaya birşey ekleyebilsem ve bana nerede hata verdiğini gösterse. Böyle birşey lazım. Bu benim için çabuk ve kolay bir çözüm olurdu. 

    .net framework güncel mi o pc de yada sen hangi framework te yazıyon bundan dolayıda olmuş olabilir.

    .net framework sürümünü mutlaka uygulama başlarken kontrol ettirmem gerek sanırım [kaynak: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed].

    ben .NET Framework 4.5.2 kullanıyorum. readme de gereksinimler kısmında ".NET Framework 4.5.2 (or higher)." olarak belirttim ama kullanıcıların kendi .net versiyonlarını bilmeleri/öğrenmeleri pek kolay olmayabilir. 

    not aldım, teşekkürler.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    Loglama işlemleri için NLog kütüphanesini kullabilirsin.

    Her metoda try catch eklemek yerine proje genelinde  exception handling yazabilir burdada log etc. işlemlerini yaptırabilirsin.

    Alttaki linkte anlatmışlar.

    https://stackify.com/csharp-catch-all-exceptions/ 

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    Tüm öneriler için çok teşekkür ederim. Önerilerden birini ya da başka bir yol kullanırsam burada ÇÖZÜLDÜ olarak belirtip ne yaptığımı da yazarım. Bu arada uygulamamdaki sorun işleme girecek olan değerin boş/tanımsız gelmesiymiş, yani bir try-catch koysaydım muhtemelen sorunu kendisi pat diye verecekti.

    Sevgiler.

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    Uzun bir aradan sonra kullanıdığım çözümü yazmak istedim (ama konu böylelikle aktif konularda en üste çıktı, verdiğim rahatsızlık için özür).

    try-catch ile sorunu çözdüm. Matematiksel işlemlerde ya da hata vermesi olası yerlerde try-cacth yapısı kullanıyor, hata oluşması durumunda logluyorum.

    Bu yapıyı uygulama geneline de uygulayabilirsiniz, yukarıda bahsedildiği gibi fakat o zaman tespiti biraz daha sıkıntılı olabilir.

    Herkese tekrar teşekkürler.

    (Başlığı belli bir süre geçtikten sonra düzeltemiyoruz, dolayısıyla ÇÖZÜLDÜ olarak düzeltemedim).

    EK: hataları bir cloud serviste depolamak ve incelemek de faydalı. bunun için sentry.io ya da loggly gibi servisler kullanılabilir.

    RockZs tarafından 30/Nis/20 14:45 tarihinde düzenlenmiştir
Toplam Hit: 3817 Toplam Mesaj: 19
microsoft microsoft