gdb, git and doxygen - zib · 2017-05-27 · who should use git? i every programmer i...

24
Advanced Practical Programming for Scientists gdb, Git and Doxygen Matthias Miltenberger Zuse Institute Berlin May 19 th , 2017

Upload: others

Post on 08-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Advanced Practical Programming for Scientists

gdb, Git and Doxygen

Matthias Miltenberger

Zuse Institute Berlin

May 19th, 2017

Page 2: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Advanced Practical Programming for Scientists

gdb, Git and Doxygen

Debugging with gdbDemo

Version Control with GitLocal GitRemote Interaction

Code Documentation with Doxygen

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 1 / 23

Page 3: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Debugging

I popular free debugger: gdb (GNU debugger)I can debug code written in any language covered by the GNU Compiler

Collection (C/C++, Ada, Java, FORTRAN, . . . )I more convenient than putting printf() at critical parts of your codeI see complete callstack/backtrace of the functions in your codeI inspect values of variables while your code is runningI pause execution whenever a variable is accessedI . . .

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 2 / 23

Page 4: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Extensions

I use gdb within Eclipse (or your favorite IDE) to immediately seewhere you currently are

I undodb-gdb: go backwards in your codeI http://undo-software.com/I easy to find out what caused a bugI unfortunately not for free

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 3 / 23

Page 5: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Demo

Time for a demo!

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 4 / 23

Page 6: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Advanced Practical Programming for Scientists

gdb, Git and Doxygen

Debugging with gdbDemo

Version Control with GitLocal GitRemote Interaction

Code Documentation with Doxygen

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 5 / 23

Page 7: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Who should use git?

I every programmerI version/history controlI branches

I everyone who uses more than one computerI file server (use git-lfs for large files)

I everyone who works together with other peopleI file serverI diff and log

I everyone who forgets what he/she did last weekI diff, log, show

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 6 / 23

Page 8: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Introduction

Features of git:I distributed version control system

I every participant has the complete history of the repositoryI branching and merging is very quick and easy

I local branches do not affect other repositoriesI fast and memory efficient

I only one directory per repositoryI tracks content instead of single filesI most actions work offline

I powerful yet user-friendlyI detailed help for every single command and use case

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 7 / 23

Page 9: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Origin

I git was created by Linus Torvalds

I’m an egoistical bastard, and I name all my projects aftermyself. First ’Linux’, now ’git’.

git (Oxford dictionary):I An unpleasant or contemptible person:

I that mean old gitI a warped, twisted little git

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 8 / 23

Page 10: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

How git works

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 9 / 23

Page 11: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Basic git commands

I git: list all common commands availableI git help command: extensive documentation for every commandI git config: change details about your personal git (name, e-mail,

editor, . . . )I git status: check whether changes are to be commited or if files are

not (yet) trackedI git log: see all previous commits on your current branch

--stat: also show the changes that were madeI git branch: list all available branches of your repositoryI git diff: list all changes between your current state and the last

commit or between two certain commits

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 10 / 23

Page 12: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Local git commands

I git add <file>: add file to the index to be tracked by gitI git commit: save current changes in the index to a new commit

I -a: put all changed files into the index first and commit themafterwards

I --amend: correct the last commitI -m: write commit-message directly after the command (no editor opens)

I git branch <branchname>: create new branch branchname basedon current state

I git checkout <hash/tag/branch>: switch to another commit orbranch

I git merge <branchname>: merge branchname into current branchI git reset --hard: revert all changes made since the last commit

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 11 / 23

Page 13: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Important note

I Always read the output of git!I It often contains very helpful tips on what to do next

or how to revert what you have just done!

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 12 / 23

Page 14: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Branching

I simple example for branchingI HEAD refers to current state of

working directoryI git checkout switches to

another state (here old)I git commit extends this branch

or creates a new one

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 13 / 23

Page 15: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

How to refer to a certain commit?

I (short) SHA1-hashI HEAD: current positionI HEAD˜2: go back two commitsI branch names are synonyms for the SHA1-hashes of their leading

commit

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 14 / 23

Page 16: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Idea of Distribution

I multiple repositories everybody can pull fromI joint work on experimental features

I server repository:I gather finished featuresI distribute stable versions

I example: Github

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 15 / 23

Page 17: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Remote Interaction

I git clone: create local copy of repository (containing completehistory)

I git fetch: get latest updates/changes from remote repo withouttouching your local workspace

I git pull: sync your repository to remote repoI same as git fetch followed by git merge

I git push: copy local changes/branches to remote repositorychanges on the server must be pulled first

I git remote add remotename: add a new remote repository to workwith (default is origin)

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 16 / 23

Page 18: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Useful tips

I gitg / gitk: visualization of the history treeI ˜/.gitconfig: personal configuration file, valid for all your reposI .gitignore: specify files (like *.java˜) that should be ignored by gitI hooks: special scripts that run after certain git actions

(example: check for trailing whitespaces)I git completion: press TAB to see all your available optionsI try to make lots of small commitsI don’t commit binary files

I never change the history (git rebase) of remote commits

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 17 / 23

Page 19: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

References

I git homepage: http://git-scm.com/I official docu: http://git-scm.com/documentation/I “Pro git” book: http://git-scm.com/book/I any problems: http://stackoverflow.com/

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 18 / 23

Page 20: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Advanced Practical Programming for Scientists

gdb, Git and Doxygen

Debugging with gdbDemo

Version Control with GitLocal GitRemote Interaction

Code Documentation with Doxygen

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 19 / 23

Page 21: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

What is Doxygen?

I tool to automatically generate a documentation based on code andyour comments

I supports all common programming languagesI can generate HTML, LATEX, man pages, XML, and some more

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 20 / 23

Page 22: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Usage

I docu style is set using a config fileI doxygen -g <config-file> generates a default configurationI simply run doxygen <config-file>I doxygen will search for source within the current directory and

subdirectoriesI input paths can also be specified in configurationI resulting documentation will be created in html/

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 21 / 23

Page 23: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Syntax

I how comments are supposed to look like:I int var; ///< Brief description after the memberI /**

* ... text ...*/

void function(int x)

I some keywords doxygen will look for (@ is the same as \):@author: author of the code@param: name and meaning of parameters a method receives@return: return value of a method

@todo: notes for future work

... there are many more

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 22 / 23

Page 24: gdb, Git and Doxygen - ZIB · 2017-05-27 · Who should use git? I every programmer I version/history control I branches I everyone who uses more than one computer I file server

Further notes

I doxygen supports LATEX code within comments to generate niceformulas

I generate inheritance graphs (for object-oriented languages)I use the included GUI tool Doxywizard for an easy accessI read the official documentation for doxygen:

www.doxygen.org

Matthias Miltenberger – APPFS 2017 – gdb, Git and Doxygen 23 / 23