Здесь:
jdata = [] # create a list
for n in response:
#convert byte string to string
jdata.append({n.decode("utf-8")}) # to get rid of "b" prefix
Вы создаете список наборов. Это должно быть:
jdata = [] # create a list
for n in response:
#convert byte string to string
jdata.append(n.decode("utf-8"))
или более просто:
jdata = [n.decode("utf-8") for n in response]
также, целью bytes.decode(encoding)
является не «избавление от префикса b», а построить Unicode-строку из байтовой строки
Можно поместить контрольную точку:
watch x
Это повредится когда x
изменяется. x
может быть любой тип переменной. Если Вы имеете:
class A;
A x;
Затем gdb повредится каждый раз, когда x изменяется.
Можно на самом деле поместить контрольную точку на любое выражение, и gdb повредится, когда выражение изменится. Будьте осторожны с этим, тем не менее, потому что, если выражение не что-то, что поддерживает используемое оборудование, gdb должен будет оценить это после каждой инструкции, которая приводит к ужасной производительности. Например, если A
выше класс со многими участниками затем gdb, может наблюдать весь экземпляр x
, но способ, которым это будет работать:
x
изменилсяЕстественно, это очень медленно. Если x
int
затем gdb может использовать аппаратную точку останова.
Если у Вас есть определенный адрес памяти, можно наблюдать его также:
watch *0x1234
Это повредится, когда содержание [0x1234] изменится.
Можно также установить использование точки останова чтения rwatch
, или awatch
установить точку останова чтения-записи.
Если Вы знаете по крайней мере приблизительно, где это происходит, можно также просто использовать "дисплей" вместо часов и вручную ступить линию за линией, пока Вы не видите, когда изменение происходит. Наблюдение адреса с помощью "часов" является просто слишком крайне медленным.