Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Небольшой логгер стека вызовов для C++

Разработка веб-сайтовC++

На написание этого топика меня сподвиг топик "Какие кодотрюки вы знаете?", и я хотел было поделиться данным логгером там, но автор просил «без фанатизма», и желал видеть такие трюки, на понимание которых требуется не больше пяти-десяти секунд, поэтому я решил вынести это дело в отдельный топик, т.к. по-быстрому такое взглядом не окинешь.

Будет рассмотрен небольшой, но иногда довольно полезный класс, плюс небольшой трюк с макросами, позволяющие проводить первичный анализ стека вызовов (call stack) прямо в stdout, в процессе работы программы. Разумеется, на stdout свет клином не сошёлся, и можете перенаправить хоть в файл, хоть куда-нибудь ещё — я лишь демонстрирую общий принцип.

Сразу договоримся:
  1. злоупотребление макросами — зло
  2. ничего нового и сверхъестественного в данной статье нет, она будет понятна даже новичку (на них и рассчитана)
  3. данный приём мало применим (или вообще не применим) в многопоточной среде
  4. реализация не претендует на идеальность, полноту, и уж тем более уникальность
  5. данный приём ни в коем случае не заменяет, а лишь дополняет дебаггер

Но если при написании программы вы не раз писали что-то вроде printf(«Entering Foo()\n»); для мониторинга входа в ту или иную функцию, то вы пришли как раз по адресу.
Поехали!
Всего голосов 63: ↑56 и ↓7 +49
Просмотры19.9K
Комментарии 38

Реализация стека за счёт … стека вызовов

Ненормальное программирование
Из песочницы
Пришла мне однажды идея: есть стек вызовов и стек как структура данных. А нельзя ли использовать стек вызовов для хранения данных?
Немного поразмыслив я понял, что можно, только с ограничениями: во первых для обработки значений придётся использовать колбеки (ведь пока значение на стеке, нельзя выходить из того вызова, в котором мы его сохранили). Во вторых доступ строго LIFO.
Реализация — под катом.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры9K
Комментарии 7

Как MooTools jQuery заборол, или детектив в стиле Коломбо

JavaScriptКлиентская оптимизацияjQueryMooToolsJoomla
Стек вызовов jQuery/MooTools По долгу работы в Айри я иногда разбираю ошибки функционирования сайта на сетевом уровне / уровне браузерного взаимодействия. Обычно это сводится к простому анализу заголовков запроса-ответа и воспроизведению тривиальных условий. Но иногда бывают интересные случаи.

Все начиналось холодным февральским вечером. Клиент написал о странной проблеме при ускорении сайта: слайд-шоу множилось и блокировало поведение сайта, страницы были недоступны. Через два дня после выяснения всех подробностей я узнал, почему Mootools и jQuery категорически нельзя использовать совместно. И подтвердился в мысли, что и «алкоголь — зло», и «eval — зло».

Но обо всем по порядку.
Читать дальше →
Всего голосов 12: ↑7 и ↓5 +2
Просмотры8.2K
Комментарии 8

Насколько хорошо вы знаете JavaScript?

Разработка веб-сайтовJavaScriptПрограммирование


Доброго времени суток! Как известно, одной из характерных черт JavaScript, наряду c мультипарадигменностью, слабой (динамической) типизацией, автоматическим управлением памятью и прототипным наследованием, является тот факт, что JS — это однопоточный (синхронный) язык.

Что касается синхронности, то ключевым элементом здесь выступает стек вызовов (call stack). Если вы впервые о нем слышите, то настоятельно рекомендую прочитать эту статью и посмотреть это видео.

Насколько хорошо вы знакомы с тем, как работает JS под «катом»?

Давайте проверим.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры8K
Комментарии 6

ProcInsp — веб-диспетчер задач для Windows

Блог компании CUSTIS.NETIT-инфраструктураC#DevOps

«Сказать программисту, что уже есть библиотека, делающая Х, это то же самое, что сказать музыканту, что уже есть песня про любовь» (с)

Есть разные способы посмотреть, чем занят сервер под Windows: можно зайти по RDP и открыть Task Manager или Process Explorer, а можно запустить удаленный сеанс через PowerShell и набрать команду Get-Process. Но что если серверов много и нужна информация по всем сразу? Заходить по RDP неудобно, а для работы с PowerShell требуется определенная квалификация.

Мы не нашли подходящего инструмента, поэтому разработали свой. Итак, встречайте ProcInsp — совершенно новый диспетчер задач для Windows.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры6.6K
Комментарии 12

Почему в Visual Studio стек вызовов асинхронного кода иногда перевёрнут?

Блог компании SkillFactoryПрограммирование.NETVisual StudioОтладка
Перевод

Вместе с моим коллегой Евгением мы потратили много времени. Приложение обрабатывает тысячи запросов в асинхронном конвейере, полном async/await. Во время нашего исследования мы получили странные вызовы, они выглядели как бы “перевернутыми”. Специально к старту нового потока курса по разработке на C#, рассказываем, почему вызовы могут оказаться перевёрнутыми даже в Visual Studio.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры4.4K
Комментарии 2