Tag Archives: debug
How to work with core dumps of Go programs
If you want to check what is going on in your service during load (on production or during stress testing process), you can take a core dump of your app and load it into Goland for further debugging.
1 2 3 4 5 6 |
# first you need to get your app's PID ps aux|grep <your-app-bin-name> gcore <PID> # download dump file and binary file to a local machine with kubectl cp <some-namespace>/<some-pod>:/core.<PID> ~/Downloads kubectl cp <some-namespace>/<some-pod>:<your-app-bin-path> ~/Downloads |
Then open it your Goland: Navigate to Run | Open Core Dump. In the Executable field, …
How go code is being compiled to assembler code
https://go.godbolt.org/z/31FyJ3 I was interested in comparing line 15 vs line 17 of the following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package main import "fmt" type kv struct { key []byte value []byte } type sliceMap []kv func (sm *sliceMap) Add(k, v []byte) { kvs := *sm if cap(kvs) > len(kvs) { kvs = kvs[:len(kvs)+1] } else { kvs = append(kvs, kv{}) } kv := &kvs[len(kvs)-1] kv.key = append(kv.key[:0], k...) kv.value = append(kv.value[:0], v...) *sm = kvs } func main() { sm := sliceMap{} sm.Add([]byte("foo"), []byte("bar")) fmt.Println(sm) } |
How to analyze the performance of your go application in production
You should definitely use chi’s middleware for running pprof and stuff in your admin panel. That’s the repo — https://github.com/go-chi/chi That’s the profiler — https://github.com/go-chi/chi/blob/master/middleware/profiler.go CPU profiling After that you can run something like this in shell:
1 |
go tool pprof -png ~/Downloads/profile |
Or just open it in the browser:
1 |
go tool pprof -http=:1234 ~/Downloads/profile |
If it opens something different then your browser (sublime …
Инструмент для визуализации зависимостей в go
https://github.com/TrueFurby/go-callvis Вызов:
1 |
go-callvis -focus [packagename] ./cmd/main.go > goblin.dot |
Отладка сторонних скриптов в Google Chrome
Если у вас есть на сайте какая-нибудь вредная система, которая вставляет произвольные скрипты на сайт, то рано или поздно встаёт проблема с тем, что их нужно отладить. В Google Chrome это можно сделать так: .
Поиск утечек памяти через Google Chrome
На примере Яндекс-почты: http://habrahabr.ru/company/yandex/blog/195198/ Самое интересное:
Отладка Grunt-задания в WebStorm
Вообще-то у меня PhpStorm, но, думаю, все будет работать и в WebStorm. Обновление: для PhpStorm 7 нужно сначала поставить плагин для node.js (Настройки→plugins→Install Jetrains plugin…→NodeJS) В общем-то, это следует из этой статьи — Способы отладки node.js приложения. Запускаем в командной строкеcd <path to Gruntfile> node —debug-brk=64005 $(which grunt) img2base64 # в fish node —debug-brk=64005 (which …
Способы отладки node.js приложения
Отладка в PhpStorm (в любой IDE от JetBrains) — http://www.jetbrains.com/webstorm/webhelp/running-and-debugging-node-js.html Отладка в браузере (Google Chrome или другой на WebKit) — https://github.com/dannycoates/node-inspector Отладка в Eclipse — https://github.com/joyent/node/wiki/using-eclipse-as-node-applications-debugger
Почему нужно указывать название лямбда-функции в js
Это нужно для более удобного дебага.
Debug javascript в PhpStorm
Почему-то у меня до сих пор здесь нет этого поста, хотя первый раз пользовался года полтора назад. В PhpStorm можно настроить режим отладки javascript, причём и страниц, находящихся на удалённой машине. http://www.jetbrains.com/editors/javascript_editor.jsp?ide=phpstorm#Debugger_for_JavaScript http://wiki.jetbrains.net/intellij/Remote_JavaScript_debugging_with_WebStorm_and_PHPStorm