LINUX.ORG.RU

Кто-нить пробовал breakpad с yocto интегрировать?

 ,


2

3

Смущает надстройка в виде depot_tools...

cast I-Love-Microsoft

Upd. Кажись я понял, надо заставить yocto синхронизировать вот эти репы

entries = {
  'src': 'https://chromium.googlesource.com/breakpad/breakpad.git',
  'src/src/testing': 'https://github.com/google/googletest.git@release-1.8.0',
  'src/src/third_party/glog': 'https://github.com/google/glog.git@v0.3.4',
  'src/src/third_party/lss': 'https://chromium.googlesource.com/linux-syscall-support@3f6478ac95edf86cd3da300c2c0d34a438f5dbeb',
  'src/src/third_party/protobuf/protobuf': 'https://github.com/google/protobuf.git@cb6dd4ef5f82e41e06179dcd57d3b1d9246ad6ac',
  'src/src/tools/gyp': 'https://chromium.googlesource.com/external/gyp@e8ab0833a42691cd2184bd4c45d779e43821d3e0',
}

★★★★★

Вообще говоря, если пакет зависит от конкретных репозиториев, для которых указана ревизия или версия, то оно само и качает именно их и именно таких версий.

Если проблема решена, то как? Если нет, подробнее бы, какие ошибки вываливаются или что не верно?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Если проблема решена, то как? Если нет, подробнее бы, какие ошибки вываливаются или что не верно?

Проблема в том, что breakpad использует depot_tools, это гуглонадстройка на пистоне на гитом.. =) В смысле проблема не решена, я понял в какую сторону копать надо. Ладно, на следующей неделе попробую разгрести )

UVV ★★★★★ ()
Последнее исправление: UVV (всего исправлений: 1)

а тебе от этого брейкпада осмысленные дампы приходят?

Мне приходилось на одном проекте, где он был внедрён, разбирать их, в большинстве случаев почему-то неадекватные стектрейсы приходят, с 200-300 вызовами всяких левых функций, чего в норме не должно быть. Проще было отказаться от него и выяснять причины сегфолтов традиционными методами

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Всегда были осмысленные. В предыдущей конторе его на x86 использовали. Поймали два бага в boost'e.

Как вариант, ты использовал символы не от той сборки?

UVV ★★★★★ ()
Последнее исправление: UVV (всего исправлений: 1)
Ответ на: комментарий от UVV

Как вариант, ты использовал символы не от той сборки?

от той

А как ты вообще это себе представляешь, программа на девайсе сегфолтится, девайс становится неюзабелен до перезагрузки, при этом он должен быть подключён к интернетам, чтобы отправлять тебе стектрейсы? :) Не та уже нынче эмбедщина, не та )

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Эмбедщина должна работать идеально и без багов! Тщательно протестирована должна быть перед релизом!

Ну да, и всё баги от этого исчезнут.

UVV ★★★★★ ()
Ответ на: комментарий от UVV

Проблема в том, что breakpad использует depot_tools, это гуглонадстройка на пистоне на гитом.. =)

раньше такой гадости не было. у него вообще не было левых зависимостей. видимо, уже испортили.

Iron_Bug ★★★ ()
Ответ на: комментарий от Harald

использовали его на серверах, на которых крутился софт для телекома. раз дней так в десять происходили падения. иными средствами отловить было невозможно.

к тому же, он умеет дампы сохранять не только при падениях, но и в любых других точках. по входу в какую-нибудь функцию, по какому-нибудь сигналу от юзера и т.д. и можно смотреть не только аутопсию, но и текущее состояние стека вызовов в любой момент, без остановки софтины.

Iron_Bug ★★★ ()
Ответ на: комментарий от Iron_Bug

использовали его на серверах, на которых крутился софт для телекома. раз дней так в десять происходили падения. иными средствами отловить было невозможно.

А что принципиально мешало залогиниться на тот сервер и использовать gdb? Если софтинка у хомячка юзера запущена, тогда понятно, ему сложно это всё организовать, лучше автоматизировать, а на сервере какой смысл

Harald ★★★★★ ()
Ответ на: комментарий от Harald

какой gdb? на рабочем сервере, где в риалтайме висят миллионы юзеров? ну да. расскажи об этом админам, дежурным и всей техподдержке. и узнаешь, в каком направлении надо двигаться :)

у breakpad есть ещё одно хорошее свойство: у него бинари стрипнутые юзеру поставляются. а файлы с символами остаются у программиста. бинарь не жиреет, дамп очень компактный.

Iron_Bug ★★★ ()
Ответ на: комментарий от Harald

юзеров сразу перебрасывают на другой сервер, а упавший софт сразу рестартует. но дело не в том. просто редко проявляющиеся ошибки или отладка на серверах, где идёт продакшн, или когда куча юзеров с разными конфигурациями - тогда breakpad удобен. например, мозилла отлаживается именно так.

конечно, пистон надо от него отрезать беспощадно, без него он прекрасно работал, не знаю, занафига его туда впарили. он там не нужен чуть более, чем нигде.

Iron_Bug ★★★ ()
Ответ на: комментарий от Iron_Bug

конечно, пистон надо от него отрезать беспощадно, без него он прекрасно работал, не знаю, занафига его туда впарили. он там не нужен чуть более, чем нигде.

Он для сборки только нужен.

UVV ★★★★★ ()
Ответ на: комментарий от Harald

А что принципиально мешало залогиниться на тот сервер и использовать gdb

Таймеры и таймауты, используемы в софте, которые срабатывают при первой остановке в отладчике. Ну это так, к примеру. Короче я до сих пор не пойму, почему ты споришь =)

UVV ★★★★★ ()
Ответ на: комментарий от Iron_Bug

к тому же, он умеет дампы сохранять не только при падениях, но и в любых других точках. по входу в какую-нибудь функцию, по какому-нибудь сигналу от юзера и т.д. и можно смотреть не только аутопсию, но и текущее состояние стека вызовов в любой момент, без остановки софтины.

О, а вот об этом не знал, спасибо за наводку, как раз искал эту фичу недавно =)

UVV ★★★★★ ()
Ответ на: комментарий от Harald

ещё бывает фигня, когда сервис вроде работает, но как-то странно. начинают копиться сессии или как-то подозрительно он себя ведёт при наблюдении счётчиков. тогда тоже удобно иметь возможность снять дамп. у нас были такие контрольные дампы, которые показывали состояние сервиса, снятые в разное время. это помогало в анализе. потому что когда в софте очень много разных веток, отладить всё становится почти невозможно. смоделировать трафик GSM и LTE тоже никак. поэтому конечная доработка всегда происходит в продакшне.

Iron_Bug ★★★ ()
Ответ на: комментарий от UVV

там просто вешаешь вызов обработчика на любое событие - и вуаля. дамп по любому требованию. иногда очень удобно, чтобы прояснять ситуации, когда софт не упал, а завис или как-то странно себя ведёт и непонятно, что случилось.

Iron_Bug ★★★ ()
Ответ на: комментарий от UVV

раньше точно не был нужен. там плюсы сплошные. я помню, я там руками код правила, чтобы размер стека побольше выставить. он там зашит был в константу. зачем там пистон? он там вообще нигде точно не нужен. на 150%.

я сейчас код глянула - они там добавили поддержку на соляре (вроде бы), раньше её не было. но для этого пистон тоже не нужен.

в общем, влепили туда лишнюю ненужную и очень тяжёлую зависимость. за такое надо руки отрубать.

Iron_Bug ★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Смысл не в сборке, а в VCS. Т.е. они используют git, но зависимости прописывают не сабмодулями, а в пистоновском формате. Потом они прогоняют этот пистоновский скрипт и кладут зависимости в нужное место. Я согласен, что это велосипед, и в связи с этим просто положить это в yocto немного проблематично.

UVV ★★★★★ ()
Ответ на: комментарий от UVV

что им мешало этот велосипед написать на перле или ваще на баше? перл есть в лине по умолчанию, на маздай ставится без проблем. работает быстрее и не весит мегатонны.

такие вещи надо сразу под корень вырубать. собсна, я это всё на баше и писала для своих нужд. скрипт пишется за пять минут.

Iron_Bug ★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

Кастану всех причастных... cast Harald, I-Love-Microsoft, Pavval, invy Поругайте:

S = "${WORKDIR}/git/src"
BREAKPAD_DIR = "${WORKDIR}/git"
DEPOT_TOOLS = "${WORKDIR}/depot_tools"

do_fetch() {
    rm -fr ${BREAKPAD_DIR}
    rm -fr ${DEPOT_TOOLS}
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git ${DEPOT_TOOLS}
    mkdir -p ${BREAKPAD_DIR}
    cd ${BREAKPAD_DIR}
    export PATH="${DEPOT_TOOLS}:$PATH"
    fetch breakpad
}

Остальное в принципе то же самое, что и в лежащем в master breakpad_svn.bb, разве что SRCREV и SRC_URI там больше нет, ибо руками делаю.

UVV ★★★★★ ()
Последнее исправление: UVV (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Руг1: разве из git-а не одной строкой можно стянуть?

Как бы можно через SRCREV и SRC_URI, но я сливаю depot_tools, а это не совсем breakpad, поэтому я думаю, что это было бы концептуально неправильно. Сам breakpad же сливается в последней строке fetch breakpad.

UVV ★★★★★ ()