For some IC on a PCB, I have a bunch of tinned test wires, maybe 4cm and 20cm, I think they are ~28AWG, so they fit most stuff I'm working on. And I soldered them into a proto-board, with 2 rows of pin headers. And if the pins on the chip are spaced wide enough, I'll just solder on as many wires as I need, to each pin, usually from the top. And then tape it all around and down, and make it nice and solid. Sometimes I'll solder onto other pads or parts, but on some PCB's and for some size parts, it's too easy too rip them of, if the wires can move all the time. But if it's all solid, then it should be ok.
And I can plug the PCB/pin headers into a breadboard too, for easy access, and even for added parts.
Then I can hook up my scope or for now, an $20 8CH logic analyzer, and a PC, could monitor and pins I want. Like right now, I'm modding 1 of my LCD DMM's, to use LED blocks, and I'm bare-metal programming an AVR MCU, to read commands and display data, from the DMM's MCU, and then output the display data.
Really all I'm using, is the datasheet for the ATmega169PA MCU, and the AVR instruction set manual. And really, I'm just improvising the codes, with no real training in ComputerSci, and trying to keep it stream-lined.
If I wanted to, I could re-try it all in C code, with something like ArduinoIDE. You should try and write a program to read/write a few bits over a clock. And then try to flesh out what real I2C does, for R/W to a super common EEPROM, like the 24Cxx series.