Pull to refresh

Comments 5

Проверил первый совет применительно к c#. Работает )

        static void PrintDebugMessage(string message)
        {
            var frame = new StackFrame(1, true); // Уходим на уровень выше?
            var file = frame.GetFileName();
            var line = frame.GetFileLineNumber();

            Debug.WriteLine(string.Format("{0}: {1}", file, message)); // Переход к файлу
            Debug.WriteLine(string.Format("{0}({1}): {2}", file, line, message)); // Переход к строке
        }

в C# можно реализовать это проще и без рантайма:


        public static void Message(string message = null,
            [CallerFilePath] string file = null, 
            [CallerMemberName] string member = null,
            [CallerLineNumber] int line = -1)
        {
            Debug.WriteLine($"[{file}@{member}:{line}] {message}");
        }
В свое время, когда надо было отлавливать много всяких событий мыши — mouseover, dragover и т.д., просто запускал свое приложение под отладчиком на виртуальной машине, и подключался к нему снаружи. Тогда было легко ходить по шагам и делать что угодно, при этом приложение думало что мышь не двигается.
Наверное, правильнее было назвать статью «11 советов, которые помогут сэкономить время при отладке программ в Visual Studio.»
На сколько я помню, в таком случае:

#define MY_TRACE(msg, ...)
MyTrace(__LINE__, __FILE__, msg, __VA_ARGS__)

__LINE__ и __FILE__ могу развернуться раньше, чем MY_TRACE. И тогда, во всех логах будет указана одна и та же строка и имя файла: место, где был объявлен MY_TRACE.
Поправьте меня, если я не прав.
Sign up to leave a comment.