Go

Advanced debugging techniques of Go code

UB2.252A (Lameere)
Andrii Soldatenko
In an ideal world, you would write Go code, compile it, and then it would work perfectly the first time. But unfortunately it doesn't work in this manner. There are many different books and articles about how to write good code in go, but not so many how to debug code efficiently. In my talk I'll try to cover such important topic. Go is a new programming language with best tools for development. In my talk I'll cover how to efficiently using these tools to debug your code. I’ll start from history of debuggers, later I'll show you how to debug go itself, if you need to find bug in language. Than I can demonstrate how to effectively debug microservices using docker and k8s, what’s remote debugging and how to apply it to application which already has been deployed. Debugging unit tests and not only code. Some tricks of debugging command line applications.
My talk is about: - compare go debuggers (delve, gdb) in real world applications; - how to effectively debug inside containers (using remote-debuggers) - how to use Mozilla rr to record and play you golang app (https://rr-project.org/) - how to use dig into slices using gdb I'm using the term docker and k8s to show how to debug applications in different environments without lot's of details of k8s, rather showing tips/tricks to speed up you microservices.

Additional information

Type devroom

More sessions

2/2/20
Go
UB2.252A (Lameere)
Go 1.14 is planned to be released in February 2019 and this talk covers what's coming up with it. We'll talk about new features and fixes in Go, new proposals for Go 2. All of the new things you might have missed.
2/2/20
Go
Dylan Meeus
UB2.252A (Lameere)
Are you tired of seeing Object Oriented code everywhere, with mutations, side-effects and headaches? Luckily, writing Go does not have to be that way! Functional programming is perfectly possible within Go, hence we can leverage FP techniques to make our code more robust, testable and fun.
2/2/20
Go
Maya Rashish
UB2.252A (Lameere)
An introduction to calling conventions, thread-local storage, signal handling and how they relate to Go, in the context of my new port of Go to NetBSD/arm64.
2/2/20
Go
Daniel Esteban
UB2.252A (Lameere)
Learn the multiples and fun possibilities of using Go on microcontrollers like Arduino to make gaming related hardware.
2/2/20
Go
Ronna Steinberg
UB2.252A (Lameere)
What if we decided to solve, once and for all, the problem of underrepresentation in the Go community of women, gender minorities, people of color, or any other group the same way we handle our problems in production, by identifying "bugs" and then fixing them? Can it even be done? What if we took the engineering approach? Ronna is planning to convince you it's not a matter of if, but a matter of how, and we are going to analyze some of the statistics, find where the problems actually lay, and ...
2/2/20
Go
Stefan Schimanski
UB2.252A (Lameere)
Kubernetes is built using Golang. CustomResourceDefinitions are the primary extension points for bringing custom data into a Kubernetes cluster. This hands-on talk is about the workflow of API definitions in Golang, generation of OpenAPI schemas as part of the CRD, client and informer generation and how to use these to process data in real-time using logic implemented in Golang controllers.
2/2/20
Go
Derek Parker
UB2.252A (Lameere)
In this talk I will begin by delivering the "State of Delve" update. In similar fashion to the popular "State of Go" talk I will begin by discussing all of the exciting new features and changes that have happened over the past year, since last FOSDEM. Following that I will go into a live demo showcasing how Delve can leverage Mozilla RR in order to perform deterministic debugging. This talk will begin by introducing users to the concept of deterministic debugging and the power that comes with ...